ERROR_ALREADY_REQUESTING_PERMISSIONS на флаттер - PullRequest
2 голосов
/ 10 мая 2019

Я создаю приложение для Android с флаттером, я создаю запрос на разрешение в первый раз, когда приложение запускается, поэтому, когда пользователь нажимает «Отклонить» и затем нажимает кнопку «Вход», разрешение запрашивается снова.Я получил эту ошибку

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
   }
}

Как с этим справиться?спасибо за ваш ответ

1 Ответ

2 голосов
/ 10 мая 2019

Дело в том, что, когда он проверяет разрешение, он возвращает ноль вместо какого-либо статуса разрешения, что приводит к исключению.Возможно, это ошибка, из-за которой у нескольких людей возникли вопросы, связанные с разрешением на размещение.

https://github.com/BaseflowIT/flutter-geolocator/issues/172

https://github.com/BaseflowIT/flutter-geolocator/issues/

https://github.com/BaseflowIT/flutter-permission-handler/issues

void getPermissionStatus() async {
        PermissionStatus permission = await PermissionHandler()
            .checkPermissionStatus(PermissionGroup.storage);
        if (permission == PermissionStatus.granted) {
        } else if (permission == PermissionStatus.denied ||
            permission == PermissionStatus.disabled ||
            permission == PermissionStatus.restricted) {
          await PermissionHandler().requestPermissions([PermissionGroup.storage]);
          getPermissionStatus();
        }
      }

Я не думаю, что есть проблема с вашим кодом в любом случае, вы можете использовать рекурсию вместо создания двух отдельных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...