requestPermission static method

void requestPermission(
  1. BuildContext context,
  2. PermissionReq permissionReq
)

申请权限,除了移动端直接返回成功

Implementation

static void requestPermission(
    BuildContext context, PermissionReq permissionReq) async {
  if (!context.isAndroid() && !context.isIOS()) {
    // 如果不是Android端且不是iOS端,则默认走有权限回调
    _onGranted(permissionReq.onGranted);
    return;
  }
  var permissions = permissionReq.permissions;
  if (permissions.isEmpty) {
    _onGranted(permissionReq.onGranted);
    return;
  }

  List<Future<PermissionStatus>> statusFutureList = [];
  for (var permission in permissions) {
    statusFutureList.add(permission.status);
  }

  Future.wait(statusFutureList).then((value) {
    bool isAllGranted = true;
    for (var permission in value) {
      if (!permission.isGranted && !permission.isLimited) {
        isAllGranted = false;
        break;
      }
    }
    Log.d("当前权限是否全部已经允许: $isAllGranted");
    if (isAllGranted) {
      _onGranted(permissionReq.onGranted);
    } else {
      _checkRequestPermission(context, permissionReq);
    }
  }, onError: (e) {
    _onDenied(permissionReq.onDenied, false);
  }).catchError((e) {
    return e;
  });
}