Плагин Geolocator для получения текущего местоположения - PullRequest
1 голос
/ 11 апреля 2019

Я использую плагин Geolocator для получения текущего местоположения устройства и плагин Google Map для интеграции виджета карты в флаттер

Карта Google работает нормально, но Geolocator выдает эту ошибку:

D/permissions_handler(10148): No permissions found in manifest for: $permission
D/permissions_handler(10148): No permissions found in manifest for: $permission

и ошибка все еще появляется, есть идеи, почему это происходит?

А в файле Androidmanifest.xml я добавил эти разрешения внутри

<manifest>:
  <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Проблема в том, что пакет google_maps_flutter требует разрешения для доступа к вашему местоположению, но в пакете нет собственных кодов для запроса этого разрешения.

Так что вам нужно написать собственный код или просто установить другой пакет, который может получить это разрешение.

Установите это: https://pub.dartlang.org/packages/location

Тогда:

getLocationPermission() async {
    final Location location = new Location();
    try {
      location.requestPermission(); //to lunch location permission popup
    } on PlatformException catch (e) {
      if (e.code == 'PERMISSION_DENIED') {
        print('Permission denied');
      }
    }
  }

Или, если вам нужен более надежный код, это мой код для какого-то проекта (с пакетом местоположения):

//Show some loading indicator depends on this boolean variable
bool askingPermission = false;

@override
  void initState() {
    this.getLocationPermission();
    super.initState();
  }

  Future<bool> getLocationPermission() async {
    setState(() {
      this.askingPermission = true;
    });
    bool result;
    final Location location = Location();
    try {
      if (await location.hasPermission())
        result = true;
      else {
        result = await location.requestPermission();
      }
      print('getLocationPermission: '
          '${result ? 'Access Allowed' : 'Access Denied'}');
    } catch (log, trace) {
      result = false;
      print('getLocationPermission/log: $log');
      print('getLocationPermission/trace: $trace');
    } finally {
      setState(() {
        this.askingPermission = false;
      });
    }
    return result;
  }
0 голосов
/ 11 апреля 2019

добавить этот пакет в проект флаттера. - pubspec.yaml

-зависимости:

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