Ich verwende die Stream-Funktion für Standortaktualisierungen in Echtzeit und bin auf ein Problem gestoßen. Wenn meine Position im Simulator festgelegt ist, funktioniert das Update normal, aber wenn ich den Standort auf Verschieben setze (Simulator-> Debug-> Standort-> Stadtlauf), wird eine Ausnahme ausgelöst:
[VERBOSE-2:shell.cc(184)] Dart Error: Unhandled exception:
PlatformException(ERROR_UPDATING_LOCATION, The operation couldn’t be completed. (kCLErrorDomain error 0.), null)
#0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1112:29)
#1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
Der Standort wird aktualisiert, ohne eine Ausnahme auszulösen
var locationOptions =
LocationOptions(accuracy: LocationAccuracy.high, distanceFilter: 10);
geolocator.getPositionStream(locationOptions).listen((Position position) {
print("New pos update: $position");
if (position != null)
setState(() {
_position = position;
});
});
Version: 2.1.1
Plattform:
Ich habe ein ähnliches Problem: Beim Verwenden des Streams für Standortaktualisierungen in Echtzeit ist ein Problem aufgetreten. Wenn meine Position im Simulator festgelegt ist, funktioniert das Update normal. Aktualisieren Sie die Position von Debug / Location einige Male, und dieser Fehler tritt auf
[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)
Konfig
Geolocator verwenden: "3.0.0"
iOS Simulator (12.1) und Gerät (12.1.4)
Ich untersuche dies weiter, werde bald aktualisieren.
Funktioniert ordnungsgemäß mit iOS Simulator 10.1, 11.1
using - simulator-> debug-> location-> auteway drive
Schlägt am 12.1 fehl
using - simulator-> debug-> location-> auteway drive
PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden.
Geolocator-Beispiel schlägt am 12.1 fehl
Ich habe das gleiche Problem
Wahr. Dies geschieht auch mit dem angegebenen Beispiel.
Hallo, ich sehe das gleiche Problem, aber für mich habe ich zuerst "City Bike Ride" ausprobiert, und das hat funktioniert! Aber dann schlug es fehl, als mit diesem Fehler auf "Stadtlauf" umgeschaltet wurde.
City Bicycle Ride könnte also ein Profil sein, das Sie in der Zwischenzeit verwenden können.
Edit 1: Und jetzt funktioniert auch der Fahrradmodus nicht mehr!
Bearbeiten 2: Das Deinstallieren der App und das erneute Zulassen des Standortzugriffs haben dieses Problem für mich behoben.
Ich sehe das auch. Ich habe das als Workaround gemacht:
StreamSubscription<Position> _positionStream;
void _streamLocation() {
// TODO: initialize _positionStream
_positionStream.onError((e) {
print("error streaming position: $e");
_disposePositionStream();
_streamLocation();
});
}
void _disposePositionStream() {
if (_positionStream != null) {
_positionStream.cancel();
_positionStream = null;
}
}
Durch einen Neustart des Streams scheint er jetzt zu funktionieren.
HINWEIS : Dies ist nicht der optimale Weg, um dies zu handhaben, indem onError
_positionStream
Null gesetzt wird, während es noch von onError
.
Immer noch wird dieser Fehler mit der Beispiel-App angezeigt
Single scheint zu funktionieren, obwohl gelegentlich null gemeldet wird, schlägt der Stream nach einigen Updates fehl.
PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)
Config (Now)
Geolocator verwenden: "5.1.1 + 1"
iOS Simulator (12.4) und Gerät (10.xx)
Durch einen Hack-Test ..
LocationTask.m
Dies funktioniert zuverlässig auf den Simulatoren 12.4 und 10.3
Denken Sie daran, dass der Simulator Debug, Location manchmal einige Male gekickt werden muss, bevor er sich ändert.
Gedanken?
Das gleiche Problem nach dem Aktualisieren der Bibliothek auf die neueste Version. Nach einigen Tests haben wir festgestellt, dass Ausnahmen ausgelöst wurden, wenn WLAN aktiviert ist. Wenn 3g aktiviert ist, funktioniert dies ordnungsgemäß. Irgendwelche Lösungen dafür?
Ein ähnliches Problem haben. Ich versuche einen Kurs von London Appbrewery zu absolvieren. Ich bekomme die folgenden Ausnahmen! Ich weiß nicht, wie ich das beheben soll: /
Code:
Wenn ich den Knopf drücke, wird Folgendes angezeigt:
Starten von lib / main.dart auf dem iPhone Xʀ im Debug-Modus ...
Ausführen von Xcode Build ...
Xcode Build fertig. 24.1s
Synchronisieren von Dateien mit dem Gerät iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)
Ich habe auch versucht, es auf dem Android-Simulator (Pixel 3a API 28) auszuführen. Es hat funktioniert, aber leider liefert es falsche Koordinaten. Der Unterschied in den Koordinaten ist enorm. Ich versuche, einen Standort aus Pakistan zu bekommen, der irgendwo in den USA gezeigt wird.
Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->
Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.
Dies wird auch für iOS-Geräte in der Produktion auf Sentry angezeigt. Ich verwende keine Standortaktualisierungen in Echtzeit, sondern rufe nur getCurrentPosition
/ getLastKnownPosition
PlatformException: PlatformException(ERROR_UPDATING_LOCATION, The operation couldn’t be completed. (kCLErrorDomain error 0.), null)
File "message_codecs.dart", line 569, in StandardMethodCodec.decodeEnvelope
File "framework.dart", line 3919, in ComponentElement.mount
File "framework.dart", line 3101, in Element.inflateWidget
File "framework.dart", line 2904, in Element.updateChild
File "framework.dart", line 5127, in SingleChildRenderObjectElement.mount
File "framework.dart", line 3101, in Element.inflateWidget
File "framework.dart", line 2904, in Element.updateChild
File "framework.dart", line 3961, in ComponentElement.performRebuild
File "framework.dart", line 3738, in Element.rebuild
File "framework.dart", line 3924, in ComponentElement._firstBuild
File "framework.dart", line 4088, in StatefulElement._firstBuild
File "framework.dart", line 3919, in ComponentElement.mount
.
.
.
Ideen?
Der folgende Code erzeugt den gleichen Fehler für mich:
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
class LoadingScreen extends StatefulWidget {
<strong i="6">@override</strong>
_LoadingScreenState createState() => _LoadingScreenState();
}
class _LoadingScreenState extends State<LoadingScreen> {
void getLocation() async {
Position position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print(position);
}
<strong i="7">@override</strong>
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
getLocation();
},
child: Text('Get Location'),
),
),
);
}
}
Android Studio 3.5.3
Build # AI-191.8026.42.35.6010548, erstellt am 15. November 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit-Server-VM von JetBrains sro
macOS 10.15.2
Geolocator-5.1.5
location_permissions-2.0.3
Flatterversion: v1.13.5
Laufen auf Similator: Iphone 11 Pro Max 13.3
Wie von @softronaut vorgeschlagen, wird der behoben . Vielleicht würde eine verbesserte Fehlermeldung helfen. In meinem Fall war der Fehler, weil kein Ort festgelegt wurde.
Ein ähnliches Problem haben. Ich versuche einen Kurs von London Appbrewery zu absolvieren. Ich bekomme die folgenden Ausnahmen! Ich weiß nicht, wie ich das beheben soll: /
Code:
Wenn ich den Knopf drücke, wird Folgendes angezeigt:
Starten von lib / main.dart auf dem iPhone Xʀ im Debug-Modus ...
Ausführen von Xcode Build ...
Xcode Build fertig. 24.1s
Synchronisieren von Dateien mit dem Gerät iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Nicht behandelte Ausnahme: PlatformException (ERROR_UPDATING_LOCATION, Der Vorgang konnte nicht abgeschlossen werden. (KCLErrorDomain-Fehler 0.), null)0 StandardMethodCodec.decodeEnvelope (Paket: flutter / src / services / message_codecs.dart: 569: 7)
1 MethodChannel.invokeMethod (Paket: flutter / src / services / platform_channel.dart: 316: 33)
2 Geolocator.getCurrentPosition (Paket: geolocator / geolocator.dart: 103: 32)
3 _LoadingScreenState.getLocation (Paket: clima / screen / load_screen.dart: 12: 10)
4 _LoadingScreenState.build. (Paket: clima / screen / load_screen.dart: 22: 13)
5 _InkResponseState._handleTap (Paket: flutter / src / material / ink_well.dart: 654: 14)
6 _InkResponseState.build. (Paket: flutter / src / material / ink_well.dart: 729: 32)
7 GestureRecognizer.invokeCallback (Paket: flutter / src / gestures / Recognizer.dart: 182: 24)
8 <…>
Ich habe auch versucht, es auf dem Android-Simulator (Pixel 3a API 28) auszuführen. Es hat funktioniert, aber leider liefert es falsche Koordinaten. Der Unterschied in den Koordinaten ist enorm. Ich versuche, einen Standort aus Pakistan zu bekommen, der irgendwo in den USA gezeigt wird.
Behebung durch Befolgen des iOS-Simulators -> Funktionen -> Standort -> Benutzerdefinierter Standort ...
Sie müssen Ihren benutzerdefinierten Speicherort im Simulator unter Funktionen> Speicherort> Benutzerdefinierter Speicherort festlegen
locati onManager: didUpdateLocations :
[CurrentLocationTask Dealloc]
[LocationTask Dealloc]
Ich bin iOS Simulator -> Funktionen -> Standort -> Benutzerdefinierter Standort gefolgt und erhalte jetzt die obige Meldung. Was ist das?
Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.
Ich musste diese Option jetzt ein paar Mal einstellen. Aus irgendeinem Grund wird die Einstellung von Zeit zu Zeit selbst zurückgesetzt. Weiß jemand warum das so ist?
Aktualisiert befindet sich dies jetzt unter Funktionen -> Standort -> Option auswählen
In Version 6.0.0 gelöst
Hilfreichster Kommentar
Ich hatte das gleiche Problem, meine Lösung lautet:
Debug -> Location ->
Als ich hier nachgesehen habe, wurden weder "Keine" noch "Benutzerdefinierter Speicherort" ausgewählt. Ich habe eine Option ausgewählt, wie Sie sehen, und es hat funktioniert.