location.getLocation() 在真实的 Android 设备上花费的时间太长。扑

Joh*_*ith 12 android location dart flutter

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

插件版本是^3.0.2.

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

kru*_*kat 8

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

观察 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();
}
Run Code Online (Sandbox Code Playgroud)

解释

我基本上保持了 5 秒的超时,如果我在 5 秒内没有找到位置,我会放弃它返回null,然后我再次点击它!& 有效

我在几个应用程序中观察到这个问题。只是getLocation()如果位置已经打开,该功能就可以正常工作。理想情况下,这不应该发生,插件或设备硬件一定存在一些深层问题。

希望这可以帮助!

PS:这个答案/sf/answers/4627600071/帮助我形成了上述解决方案。