У меня есть проект, связанный с использованием карт и отслеживания местоположения пользователя, для этого я использовал Geolocator Package . Мне нужно проверить текущее местоположение пользователя, в моем потоковом проекте сначала я проверяю последнюю позицию пользователя, если последняя позиция равна нулю, я проверяю текущую позицию пользователя.
Код
Position _currentPosition;
Position get currentPosition => _currentPosition;
Future<void> getCurrentPosition() async {
try {
Position lastPosition = await Geolocator().getLastKnownPosition();
if (lastPosition != null) {
print("Success Get Last Position...");
_currentPosition = lastPosition;
} else {
final currentPosition = await Geolocator().getCurrentPosition();
if (currentPosition != null) {
print("Success Get Your Current Position...");
_currentPosition = currentPosition;
} else {
throw "Can't Get Your Position";
}
}
} catch (e) {
throw e;
}
notifyListeners();
}
Затем Я вызываю getCurrentPosition Функция на моей кнопке OnPressed, чтобы получить пользователя местоположения следующим образом:
Кнопка GetLocation
void goToMaps() async {
final mapsProvider = context.read<MapsProvider>();
try {
print('Get Location User');
await mapsProvider.getCurrentPosition();
print('Success Get location User');
} catch (e) {
globalF.showToast(message: e.toString(), isError: true, isLongDuration: true);
}
}
Первая проблема заключается в том, что режим определения местоположения GPS Device Only
Я не могу получить LastPosition или Current Position он никогда не печатает Success Get Location User и все равно печатает Get Location User .
Вторая проблема заключается в том, что, когда режим определения местоположения по GPS равен Battery Saving
, я получил очень неточное местоположение пользователя, по сравнению с тем, что я использовал в режиме High Accuracy
.
Мой вопрос: как я могу проверить, включен ли режим определения местоположения по GPS! = Высокая точность , тогда я могу показать пользователю предупреждение, чтобы установить GPS на высокую точность.
Подобно этому вопрос
Спасибо.