美文网首页Flutter
wechat_assets_picker

wechat_assets_picker

作者: 晓函 | 来源:发表于2022-01-17 11:49 被阅读0次

    之前一直使用几千star的image_picker,后来发现这个包有几个问题
    1、安卓系统中,选择相册图片,会自动压缩的很模糊,严重失真(虚拟机和实际都这样)
    2、安卓系统中,选择相册图片的UI很难看,和国人使用习惯相差很大
    3、安卓系统中,调用相机,调用的是原生相机,app会自动切换到后台,并且有可能被系统后台kill,拍照完成,返回app后,app重启到首页。
    4、安卓系统中,调用相机拍照,有个bug,会同时返回两次结果,导致添加两张照片。

    于是选择了wechat_assets_picker和wechat_camera_picker

    这个插件内部使用了photo_manage这个插件,所以很多配置也是photo_manage到配置。

    开始配置

    添加到pubspec.yaml

      wechat_assets_picker: ^6.3.1
      wechat_camera_picker: ^2.6.4
    

    1、AndroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET" />
        <!--读写图片文件-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
    

    2、android/app/build.gradle
    最低sdk版本21

    defaultConfig {
    minSdkVersion 21
    }
    

    3、android/build.gradle

    ext.kotlin_version = '1.5.21'
    

    使用

      onTapPickFromGallery() async{
        final List<AssetEntity>? entitys = await AssetPicker.pickAssets(context,maxAssets: 6);
        if(entitys == null) return;
    
        List<String> chooseImagesPath = [];
        //遍历
        for(var entity in entitys){
          File? imgFile = await entity.file;
          if(imgFile != null) chooseImagesPath.add(imgFile.path);
        }
        print('选择照片路径:$chooseImagesPath');
    
      }
    
      onTapPickFromCamera() async{
    
        final AssetEntity? entity = await CameraPicker.pickFromCamera(context);
        if(entity == null) return;
        File? imgFile = await entity.file;
        if(imgFile == null) return;
        print('照片路径:${imgFile.path}');
      }
    
    

    相册选取效果


    image.png

    相关文章

      网友评论

        本文标题:wechat_assets_picker

        本文链接:https://www.haomeiwen.com/subject/tvrchrtx.html