pickPhoto function
Implementation
Future<String?> pickPhoto(BuildContext context, bool isCam) async {
ImagePicker _picker = ImagePicker();
final permissionList;
// 显示顶部说明弹框
showTopWarningDialog(
context: context,
title: isCam
? S.of(context).permissionCameraTitle
: S.of(context).permissionStorageTitle,
content: isCam
? S.of(context).permissionCameraContent
: S.of(context).permissionStorageContent);
if (Platform.isIOS) {
permissionList = [Permission.photos];
} else if (Platform.isAndroid) {
if (await PlatformUtils.isAboveAndroidT()) {
permissionList = [Permission.photos, Permission.videos];
} else {
permissionList = [Permission.storage];
}
} else {
permissionList = [];
}
if (!isCam) {
final granted = await PermissionsHelper.requestPermission(permissionList);
// 关闭说明弹框
Navigator.of(context).pop();
if (!granted) {
Fluttertoast.showToast(msg: S.of(context).permissionSystemCheck);
return null;
}
} else {
final granted =
await PermissionsHelper.requestPermission([Permission.camera]);
// 关闭说明弹框
Navigator.of(context).pop();
if (!granted) {
Fluttertoast.showToast(msg: S.of(context).permissionSystemCheck);
return null;
}
}
final XFile? photo = await _picker.pickImage(
source: isCam ? ImageSource.camera : ImageSource.gallery,
imageQuality: 80);
if (photo != null) {
return photo.path;
}
return null;
}