Beim Zulassen der Standortberechtigung funktioniert es gut, aber während ich die Standortberechtigung verweigere, erhalte ich die folgende Fehlermeldung.
Dart Error: Nicht behandelte Ausnahme:
PlatformException(PERMISSION_DENIED, Zugriff auf Standortdaten verweigert, null)
Erwartetes Verhalten sollte mir eine Null-Antwort geben, damit wir weitermachen können.
Pub in pubspec.yaml importieren
Schreiben Sie den folgenden Code in ein beliebiges Schaltflächentipp-Ereignis
Versuchen {
Position positionieren = auf Geolocator() warten
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
} fangen (e) {
drucken (e);
}
Sie werden einen Fehler haben.
Version: 1.0.1
[✓] Flutter (Kanalmaster, v1.0.1-pre.2, unter Mac OS X 10.14 18A384a, Gebietsschema en-GB)
[✓] Android-Toolchain – Entwicklung für Android-Geräte (Android SDK 28.0.3)
[✓] iOS-Toolchain - für iOS-Geräte entwickeln (Xcode 10.1)
[✓] Android Studio (Version 3.2)
[✓] VS-Code (Version 1.29.1)
[✓] Verbundenes Gerät (1 verfügbar)
• Keine Probleme gefunden!
Plattform:
Hast du das gelöst, wie man damit umgeht?
Irgendein Workaround dafür?
@YogeshLegendkiller @kaumudpa Wenn Sie eine Problemumgehung wünschen, versuchen Sie einfach, den Anruf
@YogeshLegendkiller , @kaumudpa , die von @jaumard bereitgestellte
Ein anderer Ansatz wäre, die Methode checkGeolocationPermissionStatus
verwenden und sicherzustellen, dass der Status auf PermissionStatus.granted
bevor getCurrentPosition
, getLastKnownPosition
oder getPositionStream
-Methoden. Dies würde jedoch bedeuten, dass Sie sich selbst um die Beantragung von Berechtigungen kümmern müssen. Zum Beispiel:
Geolocator geolocator = Geolocator();
GeolocationStatus status = await geolocator.checkGeolocationPermissionStatus();
if (status == GeolocationStatus.granted) {
Position position = await geolocator.getCurrentPosition();
}
Wie bitte um Erlaubnis?
@abdullah4one Sie können permission_handler verwenden und wie folgt um Erlaubnis bitten:
import 'package:permission_handler/permission_handler.dart';
Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.location]);
Es könnte zu spät sein, zu antworten, aber ich stand auch vor dem gleichen Problem, bei dem die App in iOS nicht um Erlaubnis bat und in Android einwandfrei funktionierte.
Da nicht um Erlaubnis gefragt wurde, funktionierte der Erlaubniscode für iOS nicht. Ich habe ein Paket namens "location_permissions" gefunden, mit dem Sie manuell um Erlaubnis bitten können.
Schritte zu tun sind wie folgt
Importieren Sie das Paket in die Datei
import ' package:location_permissions/location_permissions.dart ';
Fügen Sie den folgenden Code auf der Seite hinzu, auf der Sie um Erlaubnis bitten möchten. (Fügen Sie das besser auf der allerersten Seite Ihrer App hinzu.)
<strong i="16">@override</strong>
void initState() {
....
if (Platform.isIOS) {
location_permission();
}
....
}
Fügen Sie die folgenden beiden Methoden in derselben Datei hinzu
void location_permission() asynchron {
endgültige PermissionStatus-Berechtigung = wait _getLocationPermission();
if (permission == PermissionStatus.granted) {
endgültige Position = warten geolocator.getCurrentPosition(
gewünschteGenauigkeit: LocationAccuracy.best);
// Use the position to do whatever...
}
}
Zukunft
endgültige PermissionStatus-Berechtigung = erwarten LocationPermissions()
.checkPermissionStatus(level: LocationPermissionLevel.location);
if (permission != PermissionStatus.granted) {
final PermissionStatus permissionStatus = await LocationPermissions()
.requestPermissions(
permissionLevel: LocationPermissionLevel.location);
return permissionStatus;
} else {
return permission;
}
}
Das ist es, jetzt sollten Sie ein Popup in der iOS-App erhalten, das nach der Erlaubnis zum Standort fragt.
Hilfreichster Kommentar
@YogeshLegendkiller , @kaumudpa , die von @jaumard bereitgestellte
Ein anderer Ansatz wäre, die Methode
checkGeolocationPermissionStatus
verwenden und sicherzustellen, dass der Status aufPermissionStatus.granted
bevorgetCurrentPosition
,getLastKnownPosition
odergetPositionStream
-Methoden. Dies würde jedoch bedeuten, dass Sie sich selbst um die Beantragung von Berechtigungen kümmern müssen. Zum Beispiel: