Flutter

wechat_assets_picker

2022-01-17  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读