Flutter-geolocator: Исключение на IOS

Созданный на 14 февр. 2019  ·  21Комментарии  ·  Источник: Baseflow/flutter-geolocator

🐛 Отчет об ошибке

Я использую функцию потока для обновления местоположения в реальном времени, и у меня возникла проблема. Когда моя позиция фиксируется в симуляторе, обновление работает нормально, но когда я устанавливаю местоположение на перемещение (simulator-> debug-> location-> city run), выдается исключение:

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

Ожидаемое поведение

Локация обновляется без исключения

Шаги размножения

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

Конфигурация

Версия: 2.1.1

Платформа:

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

Самый полезный комментарий

Я столкнулся с той же проблемой, мое решение:
Отладка -> Местоположение ->

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

Когда я проверил здесь, не было выбрано ни «Нет», ни «Пользовательское местоположение», я выбрал вариант, как вы видите, и он сработал.

Все 21 Комментарий

У меня аналогичная проблема - при использовании потока для обновления местоположения в реальном времени я столкнулся с проблемой. Когда моя позиция фиксируется в симуляторе, обновление работает нормально. Обновите позицию из отладки / местоположения пару раз, и эта ошибка возникает

[VERBOSE-2: ui_dart_state.cc (148)] Необработанное исключение: PlatformException (ERROR_UPDATING_LOCATION, операция не может быть завершена. (KCLErrorDomain error 0.), null)

Конфиг
С помощью геолокатора: «3.0.0»

Симулятор iOS (12.1) и устройство (12.1.4)

Я изучаю это дальше, скоро обновлю.

Корректно работает на симуляторе iOS 10.1, 11.1
используя - simulator-> debug-> location-> автострада

Сбой на 12.1
используя - simulator-> debug-> location-> автострада
PlatformException (ERROR_UPDATING_LOCATION, операция не может быть завершена.

пример геолокатора Не ​​работает на 12.1

screenshot 2019-02-19 at 14 28 04

У меня такая же проблема

Правда. Бывает даже на приведенном примере.

Привет, я вижу ту же проблему, но сначала я попробовал «городской велосипед», и это сработало! Но потом не удалось переключиться на "городской пробег" с этой ошибкой.

Итак, City Bicycle Ride может быть профилем, который вы можете использовать в то же время.

Редактировать 1: И теперь режим велосипеда тоже перестал работать!
Изменить 2: удаление приложения и повторное разрешение доступа к местоположению устранили эту проблему для меня.

Я тоже это вижу. Я сделал это как работу:

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

Кажется, теперь перезапуск потока заставляет его работать.

ПРИМЕЧАНИЕ . Это не оптимальный способ справиться с этим путем обнуления _positionStream пока он все еще используется onError .

Все еще получаю эту ошибку, используя пример приложения
Похоже, что Single работает, хотя иногда сообщает null, поток не работает после нескольких обновлений.

PlatformException (ERROR_UPDATING_LOCATION, операция не может быть завершена. (Ошибка kCLErrorDomain 0.), null)

Конфигурация (сейчас)
С помощью геолокатора: «5.1.1 + 1»

Симулятор iOS (12.4) и устройство (10.xx)

В виде хак-теста ..

LocationTask.m

Это надежно работает на Simulator 12.4 и 10.3.
Помните, что симулятор Debug, Location иногда нужно пнуть несколько раз, прежде чем он изменится.

Мысли?

Та же проблема после обновления библиотеки до последней версии. После некоторых тестов мы обнаружили, что исключения запускаются, когда Wi-Fi включен, если включить 3g, он работает правильно. Какие-нибудь решения для этого?

Имея аналогичную проблему. Я пытаюсь пройти курс от londonappbrewery. У меня следующие исключения! Не знаю, как это исправить: /

Код:
Screenshot 2019-10-03 at 9 55 17 PM

Когда я нажимаю кнопку, она показывает:

Запуск lib / main.dart на iPhone Xʀ в режиме отладки ...
Запуск сборки Xcode ...
Сборка Xcode завершена. 24,1 с
Синхронизация файлов с устройством iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Необработанное исключение: PlatformException (ERROR_UPDATING_LOCATION, операция не может быть завершена. (KCLErrorDomain error 0.), null)

0 StandardMethodCodec.decodeEnvelope (пакет: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (пакет: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (пакет: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (пакет: clima / screen / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build.(пакет: clima / screen / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (пакет: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build.(пакет: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (пакет: flutter / src / gestures / распознаватель.dart: 182: 24)

8 <…>

Я также пробовал запустить его на симуляторе Android (Pixel 3a API 28). Это сработало, но, к сожалению, выдает неверные координаты. Разница в координатах огромная. Например, я пытаюсь получить местоположение из Пакистана и его местоположение где-то в США.

252 взгляните на это и посмотрите, есть ли у вас общие проблемы. Не могли бы вы также предоставить мне некоторую информацию о курсе, чтобы я знал, на что я смотрю?

Я столкнулся с той же проблемой, мое решение:
Отладка -> Местоположение ->

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

Когда я проверил здесь, не было выбрано ни «Нет», ни «Пользовательское местоположение», я выбрал вариант, как вы видите, и он сработал.

Также вижу это для устройств iOS, находящихся в производстве на Sentry. Я не использую обновления местоположения в реальном времени, просто звоню на 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
.
.
.

Идеи?

Следующий код создает для меня ту же ошибку:

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
Сборка № AI-191.8026.42.35.6010548, построена 15 ноября 2019 г.
JRE: 1.8.0_202-выпуск-1483-b49-5587405 x86_64
JVM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro
macOS 10.15.2

геолокатор-5.1.5
location_permissions-2.0.3
версия флаттера: v1.13.5

Работает на симуляторе: Iphone 11 Pro Max 13.3

Как предлагает @softronaut, установка местоположения в приложении симулятора избавит от ошибки. Так что, возможно, поможет улучшенное сообщение об ошибке. В моем случае ошибка была связана с тем, что местоположение не было установлено.

Имея аналогичную проблему. Я пытаюсь пройти курс от londonappbrewery. У меня следующие исключения! Не знаю, как это исправить: /

Код:
Screenshot 2019-10-03 at 9 55 17 PM

Когда я нажимаю кнопку, она показывает:

Запуск lib / main.dart на iPhone Xʀ в режиме отладки ...
Запуск сборки Xcode ...
Сборка Xcode завершена. 24,1 с
Синхронизация файлов с устройством iPhone Xʀ ...
[VERBOSE-2: ui_dart_state.cc (148)] Необработанное исключение: PlatformException (ERROR_UPDATING_LOCATION, операция не может быть завершена. (KCLErrorDomain error 0.), null)

0 StandardMethodCodec.decodeEnvelope (пакет: flutter / src / services / message_codecs.dart: 569: 7)

1 MethodChannel.invokeMethod (пакет: flutter / src / services / platform_channel.dart: 316: 33)

2 Geolocator.getCurrentPosition (пакет: geolocator / geolocator.dart: 103: 32)

3 _LoadingScreenState.getLocation (пакет: clima / screen / loading_screen.dart: 12: 10)

4 _LoadingScreenState.build. (пакет: clima / screen / loading_screen.dart: 22: 13)

5 _InkResponseState._handleTap (пакет: flutter / src / material / ink_well.dart: 654: 14)

6 _InkResponseState.build. (пакет: flutter / src / material / ink_well.dart: 729: 32)

7 GestureRecognizer.invokeCallback (пакет: flutter / src / gestures / распознаватель.dart: 182: 24)

8 <…>

Я также пробовал запустить его на симуляторе Android (Pixel 3a API 28). Это сработало, но, к сожалению, выдает неверные координаты. Разница в координатах огромная. Например, я пытаюсь получить местоположение из Пакистана и его местоположение где-то в США.

исправил это, следуя Симулятору iOS -> Возможности -> Местоположение -> Пользовательское местоположение ...

Вы должны установить собственное местоположение на симуляторе в разделе "Функции"> "Местоположение"> "Пользовательское местоположение"

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

Я следил за iOS Simulator -> Features -> Location -> Custom Location и теперь получаю указанное выше сообщение. Что это?

Я столкнулся с той же проблемой, мое решение:
Отладка -> Местоположение ->

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

Когда я проверил здесь, не было выбрано ни «Нет», ни «Пользовательское местоположение», я выбрал вариант, как вы видите, и он сработал.

Мне уже пару раз приходилось устанавливать эту опцию. По какой-то причине время от времени настройка сбрасывается сама собой. Кто-нибудь знает, почему это так?

Обновлено, теперь это в "Возможности" -> "Местоположение" -> " Выберите вариант".

Решено в версии 6.0.0

Была ли эта страница полезной?
0 / 5 - 0 рейтинги