feat:修复IOS点击头像选择相册时出现的异常
This commit is contained in:
parent
e6b6672ceb
commit
e276672507
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user