繁体   English   中英

拒绝后的权限请求 flutter 应用程序

[英]Permission request flutter app after denial

我正在开发一个 flutter 应用程序,我需要管理权限请求,但我不知道如何处理特定事件:

如果我通过弹出窗口两次拒绝相同的权限,则以后可能无法批准它,因为弹出窗口将不会再次出现。

Future<void> requestStoragePermission() async{
  var status = await Permission.storage.status;
  if(status.isPermanentlyDenied){
    await AppSettings.openAppSettings();
  } else {
    await Permission.storage.request();
  }
}

我不明白如何区分何时尚未授予权限或多次拒绝,因为 function: Permission.storage.status 总是返回“拒绝”。

我一直使用grantedlimited两种状态来管理我的权限(仅用于 iOS14+)。 这两个权限是唯一真实的状态。 其他都是虚假状态。

permission_handler package 已经为您处理了很多逻辑。 在它发出请求之前,它会检查状态以查看它是否已经定义。 如果是,那么它将返回状态。 如果该权限从未被请求过,那么它将请求该权限。

就个人而言,我为权限请求设置了一个通用方法,以保持干燥。

Future<bool> requestPermission(Permission setting) async {
  // setting.request() will return the status ALWAYS
  // if setting is already requested, it will return the status
  final _result = await setting.request();
  switch (_result) {
    case PermissionStatus.granted:
    case PermissionStatus.limited:
      return true;
    case PermissionStatus.denied:
    case PermissionStatus.restricted:
    case PermissionStatus.permanentlyDenied:
      return false;
  }
}

然后我提出一个请求

final canUseStorage = await requestPermission(Permission.storage);

if (canUseStorage) {
  // do something with storage
}

如果您的 UI 依赖于Permission的状态,那么您仍然调用Permission.storage.status

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM