parent
862f4f351c
commit
ad97721b05
@ -0,0 +1,53 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
|
class PermissionHelper {
|
||||||
|
static VoidCallback defaultCall = () {};
|
||||||
|
|
||||||
|
///检查权限
|
||||||
|
static void check(List<Permission> permissionList,
|
||||||
|
{String? errMsg,
|
||||||
|
VoidCallback? onSuccess,
|
||||||
|
VoidCallback? onFailed,
|
||||||
|
VoidCallback? onOpenSetting}) async {
|
||||||
|
bool flag = true;
|
||||||
|
for (var value in permissionList) {
|
||||||
|
var status = await value.status;
|
||||||
|
if (!status.isGranted) {
|
||||||
|
flag = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!flag) {
|
||||||
|
PermissionStatus permissionStatus =
|
||||||
|
await requestPermission(permissionList);
|
||||||
|
if (permissionStatus.isGranted) {
|
||||||
|
onSuccess != null ? onSuccess() : defaultCall();
|
||||||
|
} else if (permissionStatus.isDenied) {
|
||||||
|
onFailed != null ? onFailed() : defaultCall();
|
||||||
|
} else if (permissionStatus.isPermanentlyDenied) {
|
||||||
|
onOpenSetting != null ? onOpenSetting() : defaultCall();
|
||||||
|
} else if (permissionStatus.isRestricted) {
|
||||||
|
//IOS单独处理
|
||||||
|
onOpenSetting != null ? onOpenSetting() : defaultCall();
|
||||||
|
} else if (permissionStatus.isLimited) {
|
||||||
|
//IOS单独处理
|
||||||
|
onOpenSetting != null ? onOpenSetting() : defaultCall();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//申请权限
|
||||||
|
static Future<PermissionStatus> requestPermission(
|
||||||
|
List<Permission> permissionList) async {
|
||||||
|
Map<Permission, PermissionStatus> statuses = await permissionList.request();
|
||||||
|
PermissionStatus currentPermissionStatus = PermissionStatus.granted;
|
||||||
|
statuses.forEach((key, value) {
|
||||||
|
if (!value.isGranted) {
|
||||||
|
currentPermissionStatus = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return currentPermissionStatus;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue