Flutter-geolocator: IOS上的异常

创建于 2019-02-14  ·  21评论  ·  资料来源: Baseflow/flutter-geolocator

🐛错误报告

我正在使用流功能进行实时位置更新,但遇到了问题。 当我的位置在模拟器中固定时,更新正常进行,但是当我将位置设置为移动(模拟器->调试->位置->城市运行)时,将引发异常:

[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
  • []:机器人: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错误0。),null)

设定档
使用地理位置定位器:“ 3.0.0”

iOS模拟器(12.1)和设备(12.1.4)

我正在对此进行进一步调查,将很快更新。

在iOS模拟器10.1、11.1上正常运行
使用-模拟器->调试->位置->高速公路驱动器

在12.1上失败
使用-模拟器->调试->位置->高速公路驱动器
PlatformException(ERROR_UPDATING_LOCATION,该操作无法完成。

geolocator示例在12.1上失败

screenshot 2019-02-19 at 14 28 04

我有同样的问题

真的。 即使提供了示例,也会发生这种情况。

嗨,我看到了同样的问题,但是对我来说,我首先尝试了“城市自行车骑行”,而且行得通! 但是随后由于该错误而切换到“城市运行”时,它失败了。

因此,“城市自行车骑行”可能是您同时可以使用的个人资料。

编辑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似乎可以正常运行,尽管偶尔报告为空,但经过几次更新后流失败。

PlatformException(ERROR_UPDATING_LOCATION,该操作无法完成。(kCLErrorDomain错误0。),null)

配置(现在)
使用地理位置定位器:“ 5.1.1 + 1”

iOS模拟器(12.4)和设备(10.xx)

通过哈克测试..

LocationTask.m

  • (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@“%s”,sel_getName(_cmd));
    // [self context] resultHandler ;
    [self stopTask];
    [self startTask]; // 原谅我...
    }

这可以在Simulator 12.4和10.3上可靠地工作
请记住,模拟器“调试,位置”有时必须先踢几次才能更改。

有什么想法吗?

将库更新到最新版本后出现相同的问题。 经过一些测试,我们发现打开WiFi会引发异常,如果启用3g,它将正常工作。 有什么解决办法吗?

有类似的问题。 我正在尝试完成londonappbrewery的课程。 我收到以下例外情况! 不知道如何解决它:/

代码:
Screenshot 2019-10-03 at 9 55 17 PM

当我按下按钮时,它显示:

以调试模式在iPhoneXʀ上启动lib / main.dart ...
正在运行Xcode构建...
Xcode构建完成。 24.1秒
正在将文件同步到设备iPhoneXʀ...
[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:PlatformException(ERROR_UPDATING_LOCATION,该操作无法完成。(kCLErrorDomain错误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(package:clima / screens / loading_screen.dart:12:10)

4 _LoadingScreenState.build。(package:clima / screens / 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 / recognizer.dart:182:24)

8 <…>

我也尝试在android模拟器(Pixel 3a API 28)上运行它。 它起作用了,但不幸的是,它提供了不正确的坐标。 坐标差异巨大。 就像,我正试图从巴基斯坦获得一个地点,并将其显示在美国的某个地方。

252看一看,看看是否有共同的问题。 您还可以向我提供有关该课程的一些信息,以便我知道我在看什么吗?

我遇到了同样的问题,我的解决方案是:
调试->位置->

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

当我在此处选中时,既没有选择“无”也没有选择“自定义位置”,我选择了一个如您所见的选项,并且该选项有效。

在Sentry上生产的iOS设备上也看到了这一点。 我没有使用实时位置更新,只是调用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,于2019年11月15日构建
JRE:1.8.0_202-release-1483-b49-5587405 x86_64
JVM:JetBrains sro的OpenJDK 64位服务器VM
macOS 10.15.2

geolocator-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

当我按下按钮时,它显示:

以调试模式在iPhoneXʀ上启动lib / main.dart ...
正在运行Xcode构建...
Xcode构建完成。 24.1秒
正在将文件同步到设备iPhoneXʀ...
[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:PlatformException(ERROR_UPDATING_LOCATION,该操作无法完成。(kCLErrorDomain错误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(package:clima / screens / loading_screen.dart:12:10)

4 _LoadingScreenState.build。 (package:clima / screens / 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 / recognizer.dart:182:24)

8 <…>

我也尝试在android模拟器(Pixel 3a API 28)上运行它。 它起作用了,但不幸的是,它提供了不正确的坐标。 坐标差异巨大。 就像,我正试图从巴基斯坦获得一个地点,并将其显示在美国的某个地方。

通过遵循iOS模拟器->功能->位置->自定义位置来修复它。

您必须在模拟器上的功能>位置>自定义位置下设置自定义位置

locati onManager:didUpdateLocations
[CurrentLocationTask解除分配]
[LocationTask解除分配]

我关注了iOS Simulator->功能->位置->自定义位置,现在我收到了上面的消息。 这是什么?

我遇到了同样的问题,我的解决方案是:
调试->位置->

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

当我在此处选中时,既没有选择“无”也没有选择“自定义位置”,我选择了一个如您所见的选项,并且该选项有效。

我现在不得不设置此选项几次。 由于某种原因,设置会不时地重置。 有人知道这是为什么吗?

更新后,现在位于功能->位置->选择一个选项中

在6.0.0版中解决

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dark-chocolate picture dark-chocolate  ·  3评论

samo92 picture samo92  ·  6评论

Sammius picture Sammius  ·  4评论

DineshKachhot picture DineshKachhot  ·  7评论

prasant10050 picture prasant10050  ·  6评论