文章目录
- 1. 概念介绍
- 2. 思路与方法
- 2.1 使用思路
- 2.2 使用方法
- 3. 示例代码
- 4. 内容总结
我们在上一章回中介绍了"ImagePicker使用总结"相关的内容,本章回中将介绍wechat_assets_picker这个三方包.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
我们在本章回中介绍的wechat_assets_picker包主要用来获取图片和视频文件,它的功能类似前面章回中介绍的ImagePicker包,但是该包获取图片和视频时的UI
界面为微信风格因此包名中还有wechat字样,这是该包和ImagePicker包最大的区别。本章回中将详细介绍该包的使用方法。
2. 思路与方法
2.1 使用思路
调用包中提供的接口获取图片和视频文件,然后再从接口的返回值中读取被选择的图片和视频。在调用接口时可以通过接口的参数来指定一些功能要求。这个思路比较好
理解,我们将在接下来的小节中介绍具体的使用方法,其中将包含各种使用细节。
2.2 使用方法
- 在yaml文件中添加包,添加时需要注意包的版本,不同的版本对应不同的flutter版本;
- 添加权限相关内容。IOS需要在info.plist中指定NSPhotoLibraryUsageDescription的值,Android需要指定以下权限;
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
- 创建AssetPickerConfig对象,用来指定获取图片或者视频时相关的参数,常用的是图片数量;这个值也可以不指定,使用默认值;
- 调用包中的pickAssets接口获取图片和视频,该接口是异步接口,使用时要处理相关的错误信息;
- 从接口返回的结果中获取图片和视频文件,可以显示出来,或者上传到网络;
有些看官可能觉得上面的方法比较抽象,我们将在接下来的小节中通过具体的示例代码来演示。
3. 示例代码
ElevatedButton(
onPressed: () async {
debugPrint(" picker button clicked");
assetEntityList = await AssetPicker.pickAssets(context,
pickerConfig: pickerConfig);
if (assetEntityList != null && assetEntityList!.isNotEmpty) {
///依据文件类型是图片还是视频做不同的处理
if (assetEntity != null &&assetEntity!.type == AssetType.image) {}
if (assetEntity != null && assetEntity!.type == AssetType.video) {}
}else {
///处理接口返回的错误
}
},
child: const Text("Pick Image"),
),
我们在上面的示例代码中把获取图片和视频的接口封装到了按钮中,这样在点击按钮时将弹出一个选择图片和视频的窗口,该窗口的UI风格和微信发朋友圈时的风格完全
相同,我在这里就不演示了。大家可以自己动手去实践,或者打开手里的微信看一看。此外,代码中还有一些细节需要说明:
- 接口返回的文件存放在List中,也就是代码中的assetEntityList,List中的元素类型是AssetEntity;
- 接口的参数是pickerConfig,这方面的内容比较多,我们在后面章回中单独介绍;
- 接口是异步操作,因此示例代码中使用async/await关键字,也可以通过Future来运行;
- 接口返回的文件类型是AssetType类型,它包含Image,Video,Audio和other四种类型;
4. 内容总结
最后,我们对本章回中内容做一个全面的总结:
- wechat_assets_picker包主要用来获取图片和视频文件;
- wechat_assets_picker包在获取图片和视频文件时使用和微信相同的界面风格;
- 我们可以使用包中的pickAssets接口来获取图片和视频文件,注意接口是异步接口;
- 接口可以返回单个或者多个图片和视频文件,文件的类型相同而且存放在List中;
看官们,与"wechat_assets_picker简介"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!