downloadImage method
Future<void>
downloadImage({
- bool? isAsset,
- bool? checkPermission,
- String? imageName,
- int quality = 80,
- VoidCallback? noPermission,
下载图片资源到相册
isAsset
- 是否为资产文件
checkPermission
- 是否需要检测相册权限
imageName
- 保存到相册的文件名字
quality
- 保存质量
最好捕获一下异常,如果没有抛出异常则表示下载成功.
错误码401
- 没有获取访问相册的权限
错误码201
- 保存失败,重试
Implementation
Future<void> downloadImage({bool? isAsset, bool? checkPermission, String? imageName, int quality = 80,VoidCallback? noPermission}) async {
try {
// 访问相册权限检测
if (checkPermission == true) {
final permission = await KPermissionUtil.instance.getAndroidSdkPermissionWithPicture();
PermissionStatus storageStatus = await permission.status;
if (storageStatus != PermissionStatus.granted) {
storageStatus = await permission.request();
if (storageStatus != PermissionStatus.granted) {
throw '401';
}
}
}
// 保存的图片数据
dynamic imageBytes;
if (isAsset == true) {
// 保存资产图片
final bytes = await rootBundle.load(this);
imageBytes = bytes.buffer.asUint8List();
} else {
// 保存网络图片
final image = CachedNetworkImage(imageUrl: this);
final manager = image.cacheManager ?? DefaultCacheManager();
final headers = image.httpHeaders ?? {};
final file = await manager.getSingleFile(
image.imageUrl,
headers: headers,
);
imageBytes = await file.readAsBytes();
}
// 保存图片
final result = await SaverGallery.saveImage(imageBytes, name: imageName ?? '', androidExistNotSave: false);
if (result.isSuccess.not) throw '201'; // 保存失败,请重试
} catch (e) {
rethrow;
}
}