#flutter #flutter-dependencies
#флаттер #flutter-зависимости
Вопрос:
В моем приложении я использую geolocator: ^6.0.0-rc.3
package, но поскольку я обновился до этой версии, приложение застряло LocationPermission.deniedForever
даже с тестом, которое я предоставил. разрешение.
Я поставил флажок запрашивать разрешение, но всплывающее окно разрешения не появляется. Можете ли вы определить, что я здесь делаю не так? Как всегда, большое спасибо.
await geolocator.checkPermission().then((LocationPermission value) async {
print('GeolocatorDevice.getPosition() getPosition device checkPermission : $value');
// prints 'flutter: GeolocatorDevice.getPosition() getPosition device checkPermission : LocationPermission.deniedForever'
if(value == null || value == LocationPermission.denied || value == LocationPermission.deniedForever ) {
print('GeolocatorDevice.getPosition() will now request permission');
await geolocator.requestPermission().then((value) async {
locationPermission = value;
}).catchError((e) => print('GeolocatorDevice.getPosition() requestPermission error: $e'));
} else {
locationPermission = value;
await geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high,
)
.timeout(Duration(seconds: 100))
.then((value) {
position = value;
print('GeolocatorDevice.getPosition() location is $value');
}).catchError((e) => print('GeolocatorDevice.getPosition() Error fetching user position : $e'));
}
});
Комментарии:
1. У меня такая же проблема. Пожалуйста, поделитесь своим решением, если оно у вас есть.
Ответ №1:
Реализовали ли вы в AndroidManifest.xml
located under path android -> app -> src -> main
разрешения для доступа к Android, подобные этому?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourCompanyName.whateverNameHaveYourProject">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
.....
.....
</application>
</manifest>
Также Info.plist
в разделе «путь ios -> Runner
» вам нужно добавить следующее разрешение для стороны iOS следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
.....
.....
<key>NSLocationAlwaysUsageDescription</key>
<string>Needed to access location always when the app is open.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Needed to access location when the app is open and run in background.</string>
</dict>
</plist>