【问题标题】:location.getLocation() is taking too long on a real android device. Flutterlocation.getLocation() 在真正的 android 设备上花费的时间太长。扑
【发布时间】:2020-10-02 12:28:34
【问题描述】:

我在尝试在真实设备上使用 location.getLocation() 获取用户位置时遇到问题,现在 它在模拟器上完美运行且速度超快,但 在真实设备上很慢,我不知道为什么会这样。

插件版本为^3.0.2

任何人都知道这里发生了什么。

【问题讨论】:

  • 您是否在设备中检查了权限并打开了位置信息?
  • @JavadDehban 哦,是的,权限和其他一切都很好,真正的设备最终会获取位置,问题是这样做花费的时间太长
  • 面临同样的问题
  • 在下面发布了一个 hacky 解决方案 :)
  • 祝你走运这么快......因为我需要在每张照片上标记位置......但每次获取位置需要 2 秒

标签: android flutter dart location


【解决方案1】:

我有同样的问题,但我注意到了一些事情。

观察 1 位置已关闭,现在我单击按钮获取位置。它要求我打开位置,我打开它,它需要永远await location.getLocation(); 执行永远不会到达下一行代码。

观察 2 位置已打开,现在我单击按钮以获取位置。它不会要求打开位置,因为它已经打开了,猜猜看,它会在 3-4 秒内获取用户位置?


如何处理观察 1?

解决方案??

_locationData = await Future.any([
  location.getLocation(),
  Future.delayed(Duration(seconds: 5), () => null),
]);
if (_locationData == null) {
  _locationData = await location.getLocation();
}

解释

我基本上保持了 5 秒的超时,如果我在 5 秒内没有得到位置,我将它丢弃返回 null 然后我再次点击它!并且成功了?

我在几个应用程序中观察到了这个问题。只是 getLocation() 功能在定位已经打开的情况下运行良好。理想情况下,这不应该发生,插件或设备硬件肯定有一些深层次的问题,没有时间详细说明。。

希望这对兄弟有帮助,干杯!

PS:这个答案https://stackoverflow.com/a/66108572/7475099 帮助我形成了上述解决方案。

【讨论】:

    【解决方案2】:

    iOS 设备也存在类似问题。

    更多信息请参见this comment

    目前还没有找到好的解决方案。

    似乎最好使用 getLastKnownPosition(),但不确定如果这是您第一次拉位置,它的效果如何。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多