首页 > 解决方案 > location.getLocation() 在真正的 android 设备上花费的时间太长。扑

问题描述

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

插件版本是^3.0.2.

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

标签: androidflutterdartlocation

解决方案


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

观察 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帮助我形成了上述解决方案。


推荐阅读