我创建了一个Android应用程序与flutter,我创建权限请求在第一次应用程序运行时,所以当用户点击拒绝,然后点击登录按钮,再次请求权限。我得到这个错误
Exception has occurred.
PlatformException (PlatformException(ERROR_ALREADY_REQUESTING_PERMISSIONS, A request for permissions is already running, please wait for it to finish before doing another request (note that you can request multiple permissions at the same time)., null))
这是我的密码
@override
void initState() {
this.setSharedPreferences();
PermissionHandler().checkPermissionStatus(PermissionGroup.location).then(_checkPermission);
}
void _checkPermission(PermissionStatus status){
if(status == PermissionStatus.unknown || status == PermissionStatus.denied){
_askPermission();
}
}
void _askPermission() async{
await PermissionHandler().requestPermissions([PermissionGroup.location]);
}
void onLogin() async {
PermissionStatus locationPermission = await PermissionHandler().checkPermissionStatus(PermissionGroup.location);
if(locationPermission == PermissionStatus.denied || locationPermission == PermissionStatus.unknown){
_askPermission();
}else{
// user available to login
}
}
如何处理?谢谢你的回答
3条答案
按热度按时间icnyk63a1#
问题是,当它检查权限时,它返回null而不是任何权限状态,这会导致异常。这可能是一个bug,多个人填写了与位置权限相关的问题。
https://github.com/BaseflowIT/flutter-geolocator/issues/172
https://github.com/BaseflowIT/flutter-geolocator/issues/
https://github.com/BaseflowIT/flutter-permission-handler/issues
我不认为你的代码有问题,无论如何,你可以使用递归,而不是创建两个单独的函数。
8ljdwjyq2#
对于使用permission_handler更新版本的用户:
通过这种方式,您可以一次请求多个权限...
7gyucuyw3#
这对我很有效(这是为了联系许可,但对其他人也应该有效)