feat:修复IOS点击头像选择相册时出现的异常

This commit is contained in:
liyi 2025-03-11 13:57:39 +08:00
parent e6b6672ceb
commit e276672507

View File

@ -69,14 +69,22 @@ class PermissionDialog {
CupertinoDialogAction( CupertinoDialogAction(
child: Text('不允许'.tr), child: Text('不允许'.tr),
onPressed: () { onPressed: () {
BuglyTool.uploadExceptionWithEvent(eventStr: '${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}', detail: "不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'"); BuglyTool.uploadExceptionWithEvent(
eventStr:
'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}',
detail:
"不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'");
Get.back(result: false); Get.back(result: false);
}, },
), ),
CupertinoDialogAction( CupertinoDialogAction(
child: Text('允许'.tr), child: Text('允许'.tr),
onPressed: () { onPressed: () {
BuglyTool.uploadExceptionWithEvent(eventStr: '${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}', detail: "不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'"); BuglyTool.uploadExceptionWithEvent(
eventStr:
'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}',
detail:
"不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'");
Get.back(result: true); Get.back(result: true);
}, },
), ),
@ -110,10 +118,15 @@ class PermissionDialog {
if (Get.context == null) { if (Get.context == null) {
return false; return false;
} }
final AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo; bool isAndroid33 = false;
final bool isAndroid33 = try {
AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33; final AndroidDeviceInfo androidInfo =
await DeviceInfoPlugin().androidInfo;
isAndroid33 = AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33;
} catch (e) {
// 使
isAndroid33 = false;
}
// //
List<Permission> requestPermission() { List<Permission> requestPermission() {
List<Permission> permissions; List<Permission> permissions;
@ -148,7 +161,7 @@ class PermissionDialog {
bool application = true; bool application = true;
const Permission permission = Permission.photos; const Permission permission = Permission.photos;
final List<Permission> permissions = requestPermission(); final List<Permission> permissions = requestPermission();
final dynamic cache = await Storage.getString(titles[permission]??''); final dynamic cache = await Storage.getString(titles[permission] ?? '');
final bool isGranted = await permissionStatus(permissions); final bool isGranted = await permissionStatus(permissions);
if (AppPlatform.isAndroid && !isGranted && cache is! String) { if (AppPlatform.isAndroid && !isGranted && cache is! String) {
application = await showCupertinoDialog( application = await showCupertinoDialog(
@ -187,7 +200,8 @@ class PermissionDialog {
} }
} }
if (application) { if (application) {
final Map<Permission, PermissionStatus> statuses = await permissions.request(); final Map<Permission, PermissionStatus> statuses =
await permissions.request();
final bool isGranted = await permissionStatus(statuses.keys.toList()); final bool isGranted = await permissionStatus(statuses.keys.toList());
return isGranted; return isGranted;
} }
@ -241,7 +255,7 @@ class PermissionDialog {
bool application = true; bool application = true;
const Permission permission = Permission.storage; const Permission permission = Permission.storage;
final List<Permission> permissions = requestPermission(); final List<Permission> permissions = requestPermission();
final dynamic cache = await Storage.getString(titles[permission]??''); final dynamic cache = await Storage.getString(titles[permission] ?? '');
final bool isGranted = await permissionStatus(permissions); final bool isGranted = await permissionStatus(permissions);
if (AppPlatform.isAndroid && !isGranted && cache is! String) { if (AppPlatform.isAndroid && !isGranted && cache is! String) {
application = await showCupertinoDialog( application = await showCupertinoDialog(
@ -270,7 +284,7 @@ class PermissionDialog {
}, },
); );
if (application) { if (application) {
await Storage.setString(titles[permission]??'', titles[permission]); await Storage.setString(titles[permission] ?? '', titles[permission]);
} }
} else if (cache is String) { } else if (cache is String) {
final bool isDenied = !(await permissionStatus(permissions)); final bool isDenied = !(await permissionStatus(permissions));
@ -280,7 +294,8 @@ class PermissionDialog {
} }
} }
if (application) { if (application) {
final Map<Permission, PermissionStatus> statuses = await permissions.request(); final Map<Permission, PermissionStatus> statuses =
await permissions.request();
final bool isGranted = await permissionStatus(statuses.keys.toList()); final bool isGranted = await permissionStatus(statuses.keys.toList());
return isGranted; return isGranted;
} }
@ -295,7 +310,7 @@ class PermissionDialog {
} }
bool application = true; bool application = true;
final PermissionStatus status = await permission.status; final PermissionStatus status = await permission.status;
final dynamic cache = await Storage.getString(titles[permission]??''); final dynamic cache = await Storage.getString(titles[permission] ?? '');
if (AppPlatform.isAndroid && !status.isGranted && cache is! String) { if (AppPlatform.isAndroid && !status.isGranted && cache is! String) {
application = await showCupertinoDialog( application = await showCupertinoDialog(
context: Get.context!, context: Get.context!,
@ -309,14 +324,22 @@ class PermissionDialog {
CupertinoDialogAction( CupertinoDialogAction(
child: Text('不允许'.tr), child: Text('不允许'.tr),
onPressed: () { onPressed: () {
BuglyTool.uploadExceptionWithEvent(eventStr: '${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}', detail: "不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'"); BuglyTool.uploadExceptionWithEvent(
eventStr:
'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}',
detail:
"不允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'");
Get.back(result: false); Get.back(result: false);
}, },
), ),
CupertinoDialogAction( CupertinoDialogAction(
child: Text('允许'.tr), child: Text('允许'.tr),
onPressed: () { onPressed: () {
BuglyTool.uploadExceptionWithEvent(eventStr: '${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}', detail: "允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'"); BuglyTool.uploadExceptionWithEvent(
eventStr:
'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr}',
detail:
"允许'${'申请'.tr}${titles[permission] ?? ''}${'权限'.tr} titles:$titles'");
Get.back(result: true); Get.back(result: true);
}, },
), ),
@ -325,7 +348,7 @@ class PermissionDialog {
}, },
); );
if (application) { if (application) {
await Storage.setString(titles[permission]??'', titles[permission]); await Storage.setString(titles[permission] ?? '', titles[permission]);
} }
} else if (cache is String) { } else if (cache is String) {
if (status.isDenied) { if (status.isDenied) {