You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用中GPS运行时开关导致getCurrentPosition()挂起的处理方案咨询

Flutter应用中GPS运行时开关导致getCurrentPosition()挂起的处理方案咨询

各位好,我目前正在用Dart和Flutter开发一个基础款的天气APP。在这个APP里,我是通过一个简单的Riverpod FutureProvider来获取设备位置的,代码如下:

final geolocationProvider = FutureProvider<Coordinates>((ref) async {
  return await determinePosition();
});

而位置相关的处理逻辑,我是放在服务类里实现的,目前的代码框架是这样的:

import 'package:geolocator/geolocator.dart';
import 'package:shared_preferences/shared_preferences.dart';

// 用于封装坐标的简单类

最近我碰到个挺头疼的问题:当APP正在运行的时候,如果用户手动切换了GPS的开关状态,getCurrentPosition()方法就会直接挂住——既不返回坐标结果,也不抛出任何异常,直接导致整个位置获取流程卡住,APP没法正常往下走。

有没有有经验的朋友能给我支个招呀?比如能不能给位置请求设置个超时时间,或者有没有办法监听GPS状态的变化,在状态改变时中断当前的位置请求,避免这种无响应的情况?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:05:27