Я использую плагин Geolocator в проекте Flutter. Я добавил это Pubspecs.yaml файл также добавил разрешение в файле AndroidManifest.
Pubspecs.yaml
dependencies:
http: ^0.12.0
flutter:
sdk: flutter
shimmer: ^1.0.1
font_awesome_flutter: ^8.8.1
geocoder: ^0.2.1
geolocator: ^5.3.1
Android Манифест
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Я использую SDK 28 - compileSdkVersion 28
Вот код для доступа к местоположению.
String _locationMessage = "";
void _getCurrentLocation() async {
print('location');
final position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print(position);
setState(() {
_locationMessage = "${position.latitude}, ${position.longitude}";
});
}
Когда я вызываю _getCurrentLocation () для кнопки, нажатой. Он показывает диалоговое окно, чтобы разрешить доступ к местоположению в приложении с тремя вариантами.
Allow all the time
Keep While-In-Use Access
Keep and Don't Ask Again
После выбора Сохранить во время использования он выдает следующее сообщение в консоли отладки.
E/location_permissions( 7592): Flutter result object is null.
Что я делаю не так?
Кроме того, я хочу знать, будет ли он спрашивать все время, когда мы пытаемся получить доступ к местоположению, или это будет один раз?
Редактировать
Если я выберу Разрешить все время , тогда мое приложение перестанет отвечать. Я имею в виду, если нажать кнопку, ничего не произойдет. Также мне нужно удалить его с телефона и запустить снова, после чего он начнет выдавать запрос на разрешение.
Редактировать 2
Одна странная вещь, которую я обнаружил. Если служба определения местоположения остановлена / не включена, то я получаю нулевое значение. Если я вручную включаю местоположение, то оно начинает давать мне местоположение.