Flutter-geolocator: Exception sur IOS

Créé le 14 févr. 2019  ·  21Commentaires  ·  Source: Baseflow/flutter-geolocator

🐛 Rapport de bogue

J'utilise la fonctionnalité de flux pour les mises à jour de localisation en temps réel et j'ai rencontré un problème. Lorsque ma position est fixée dans le simulateur, la mise à jour fonctionne normalement mais lorsque je règle l'emplacement sur déplacement (simulateur-> debug-> location-> city run), une exception est levée:

[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)

Comportement prévisible

L'emplacement est mis à jour sans lever d'exception

Étapes de reproduction

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;
        });
    });

Configuration

Version: 2.1.1

Plate-forme:

  • [x]: iphone: iOS
  • []: robot: Android
ios bug up for graps

Commentaire le plus utile

J'ai rencontré le même problème, ma solution est:
Déboguer -> Emplacement ->

Screen Shot 2019-10-17 at 4 28 02 PM

Lorsque j'ai coché ici, ni «Aucun» ni «Emplacement personnalisé» n'ont été sélectionnés, j'ai sélectionné une option comme vous le voyez et cela a fonctionné.

Tous les 21 commentaires

J'ai un problème similaire - Utiliser le flux pour les mises à jour de localisation en temps réel et j'ai rencontré un problème. Lorsque ma position est fixée dans le simulateur, la mise à jour fonctionne normalement. Mettez à jour la position à partir du débogage / de l'emplacement plusieurs fois et cette erreur se produit

[VERBOSE-2: ui_dart_state.cc (148)] Exception non gérée: PlatformException (ERROR_UPDATING_LOCATION, l'opération n'a pas pu être terminée. (Erreur kCLErrorDomain 0.), null)

Config
Utilisation du géolocalisateur: "3.0.0"

Simulateur iOS (12.1) et appareil (12.1.4)

J'étudie cette question plus en détail, je mettrai à jour bientôt.

Fonctionne correctement sur le simulateur iOS 10.1, 11.1
en utilisant - simulator-> debug-> location-> freeway drive

Échec le 12.1
en utilisant - simulator-> debug-> location-> freeway drive
PlatformException (ERROR_UPDATING_LOCATION, l'opération n'a pas pu être terminée.

exemple de géolocalisateur échoue sur 12.1

screenshot 2019-02-19 at 14 28 04

J'ai le même problème

Vrai. Cela arrive même avec l'exemple fourni.

Salut, je vois le même problème, mais pour moi, j'ai d'abord essayé le «vélo de ville» et cela a fonctionné! Mais ensuite, il a échoué lors du passage à "city run" avec cette erreur.

Ainsi, City Bicycle Ride pourrait être un profil que vous pouvez utiliser entre-temps.

Edit 1: Et maintenant, le mode vélo a également cessé de fonctionner!
Edit 2: la désinstallation de l'application et la réactivation de l'accès à la localisation ont résolu ce problème pour moi.

Je vois cela aussi. J'ai fait cela comme un travail autour:

  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;
    }
  }

Le redémarrage du flux semble le faire fonctionner maintenant.

REMARQUE : ce n'est pas la meilleure façon de gérer cela en annulant le _positionStream alors qu'il est encore utilisé par onError .

Vous obtenez toujours cette erreur en utilisant l'exemple d'application
Single semble fonctionner, bien que signale parfois null, le flux échoue après quelques mises à jour.

PlatformException (ERROR_UPDATING_LOCATION, l'opération n'a pas pu être terminée. (Erreur kCLErrorDomain 0.), null)

Config (maintenant)
Utilisation du géolocalisateur: "5.1.1 + 1"

Simulateur iOS (12.4) et appareil (10.xx)

Au moyen d'un test de piratage.

LocationTask.m

  • (void) locationManager: (CLLocationManager *) manager didFailWithError: (NSError *) error {
    NSLog (@ "% s", sel_getName (_cmd));
    // [contexte personnel] resultHandler ;
    [auto stopTask];
    [auto startTask]; // Pardonne-moi...
    }

Cela fonctionne de manière fiable sur le simulateur 12.4 et 10.3
Rappelez-vous le débogage du simulateur, l'emplacement doit parfois être expulsé plusieurs fois avant de changer.

Pensées?

Avoir le même problème après la mise à jour de la bibliothèque vers la dernière version. Après quelques tests, nous avons constaté que les exceptions se déclenchaient lorsque le WiFi est activé, si activer la 3G, cela fonctionne correctement. Des solutions pour ça?

Avoir un problème similaire. J'essaye de suivre un cours de londonappbrewery. J'obtiens les exceptions suivantes! Je ne sais pas comment y remédier: /

Code:
Screenshot 2019-10-03 at 9 55 17 PM

Lorsque j'appuie sur le bouton, cela montre:

Lancement de lib / main.dart sur iPhone Xʀ en mode débogage ...
Exécution de la compilation Xcode ...
Construction de Xcode terminée. 24,1 s
Synchronisation des fichiers avec l'appareil iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Exception non gérée: PlatformException (ERROR_UPDATING_LOCATION, l'opération n'a pas pu être terminée. (Erreur kCLErrorDomain 0.), null)

0 StandardMethodCodec.decodeEnvelope (package: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (package: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (package: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (paquet: clima / screens / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build.(paquet: clima / screens / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (package: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build.(paquet: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (paquet: flutter / src / gestures / Recognizer.dart: 182: 24)

8 <…>

J'ai également essayé de l'exécuter sur le simulateur Android (Pixel 3a API 28). Cela a fonctionné mais malheureusement, il fournit des coordonnées incorrectes. La différence de coordonnées est énorme. Par exemple, j'essaie d'obtenir un emplacement du Pakistan et de son emplacement de projection quelque part aux États-Unis.

Regardez ceci et voyez si vous avez des problèmes en commun. Pourriez-vous également me fournir des informations sur le cours afin que je sache ce que je regarde?

J'ai rencontré le même problème, ma solution est:
Déboguer -> Emplacement ->

Screen Shot 2019-10-17 at 4 28 02 PM

Lorsque j'ai coché ici, ni «Aucun» ni «Emplacement personnalisé» n'ont été sélectionnés, j'ai sélectionné une option comme vous le voyez et cela a fonctionné.

Voir également cela pour les appareils iOS en production sur Sentry. Je n'utilise pas de mises à jour de localisation en temps réel, juste des appels à 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
.
.
.

Des idées?

Le code suivant crée la même erreur pour moi:

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'),
        ),
      ),
    );
  }
}

Versions

Android Studio 3.5.3
Build # AI-191.8026.42.35.6010548, construit le 15 novembre 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: VM serveur OpenJDK 64 bits par JetBrains sro
macOS 10.15.2

géolocalisateur-5.1.5
location_permissions-2.0.3
version flutter: v1.13.5

Fonctionnant sur similator: Iphone 11 Pro Max 13.3

Comme suggéré par @softronaut , la définition de l'emplacement dans l'application du simulateur éliminera l'erreur. Alors peut-être qu'un message d'erreur amélioré serait utile. Dans mon cas, l'erreur était due au fait qu'aucun emplacement n'avait été défini.

Avoir un problème similaire. J'essaye de suivre un cours de londonappbrewery. J'obtiens les exceptions suivantes! Je ne sais pas comment y remédier: /

Code:
Screenshot 2019-10-03 at 9 55 17 PM

Lorsque j'appuie sur le bouton, cela montre:

Lancement de lib / main.dart sur iPhone Xʀ en mode débogage ...
Exécution de la compilation Xcode ...
Construction de Xcode terminée. 24,1 s
Synchronisation des fichiers avec l'appareil iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Exception non gérée: PlatformException (ERROR_UPDATING_LOCATION, l'opération n'a pas pu être terminée. (Erreur kCLErrorDomain 0.), null)

0 StandardMethodCodec.decodeEnvelope (package: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (package: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (package: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (paquet: clima / screens / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build. (paquet: clima / screens / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (package: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build. (paquet: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (paquet: flutter / src / gestures / Recognizer.dart: 182: 24)

8 <…>

J'ai également essayé de l'exécuter sur le simulateur Android (Pixel 3a API 28). Cela a fonctionné mais malheureusement, il fournit des coordonnées incorrectes. La différence de coordonnées est énorme. Par exemple, j'essaie d'obtenir un emplacement du Pakistan et de son emplacement de projection quelque part aux États-Unis.

corrigé en suivant le simulateur iOS -> Fonctionnalités -> Emplacement -> Emplacement personnalisé ...

Vous devez définir votre emplacement personnalisé sur le simulateur sous fonctionnalités> emplacement> emplacement personnalisé

locati onManager: didUpdateLocations :
[CurrentLocationTask dealloc]
[LocationTask dealloc]

J'ai suivi iOS Simulator -> Fonctionnalités -> Emplacement -> Emplacement personnalisé et maintenant je reçois le message ci-dessus. Qu'est-ce que c'est?

J'ai rencontré le même problème, ma solution est:
Déboguer -> Emplacement ->

Screen Shot 2019-10-17 at 4 28 02 PM

Lorsque j'ai coché ici, ni «Aucun» ni «Emplacement personnalisé» n'ont été sélectionnés, j'ai sélectionné une option comme vous le voyez et cela a fonctionné.

J'ai dû définir cette option plusieurs fois maintenant. Pour une raison quelconque, de temps en temps, le paramètre se réinitialise. Quelqu'un sait pourquoi c'est?

Mis à jour, c'est maintenant dans Fonctionnalités -> Emplacement -> Sélectionnez une option

Résolu dans la version 6.0.0

Cette page vous a été utile?
0 / 5 - 0 notes