Программно включить местоположение во флаттере - PullRequest
0 голосов
/ 04 марта 2020

Я хочу включить местоположение устройства программно, не переходя на экран настроек. Там будет всплывающее окно с просьбой указать местоположение. После нажатия на кнопку ОК местоположение устройства будет включено. Как это сделать во Флаттере?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Сначала вам нужно использовать location package. Теперь используйте этот метод в состоянии инициализации, чтобы пользователь разрешил доступ к местоположению

@override
void initState() {
   super.initState();
  _checkPermissions();
}

_checkPermissions() async {
    Location location = Location();
     bool permission = await location.hasPermission() == PermissionStatus.GRANTED;
     if (!permission) {
       await location.requestPermission();
    }
}

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

Future<void> _getLocation(bool value) async {
 // show Loading on start
 // loading = true;
 // future Delayed if the user does not grant location second layer permission
 Future.delayed(Duration(seconds: 10), () {
  _error = 'Sorry, enable to get your location. \n Please try again';
});
 Location location = Location();
_locationData = await location.getLocation();
// After getting location do stuff here
}
0 голосов
/ 04 марта 2020

Как правило, вам придется обрабатывать специфичные для платформы службы определения местоположения c в вашем приложении Flutter. К счастью, люди уже разработали плагины, чтобы вы могли делать это, не изобретая велосипед. Один пакет, который я использовал в прошлом, и я могу предложить, это location , он построен на основе iOS и Android нативных сервисов определения местоположения, с красивой оболочкой Flutter вокруг них.

Что касается всплывающего окна с разрешениями, вам придется обрабатывать его самостоятельно для каждой платформы. В случае пакета местоположения вам нужно сделать это только за iOS. Подробнее об этом вы можете прочитать в описании пакета, в разделах «Начало работы» и «Использование».

...