[英]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 总是返回“拒绝”。
我一直使用granted
和limited
两种状态来管理我的权限(仅用于 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.