Flutter如何在启动页检查位置权限授权状态并跳转对应页面
Flutter启动页权限校验跳转实现方案
1. 优化权限状态获取方法
你现有的getCurrentLocationData可以简化为更简洁的写法,功能完全一致:
Future<PermissionStatus> getCurrentLocationStatus() async { // 直接返回位置权限当前状态,无需多层判断 return await Permission.locationWhenInUse.status; }
2. 修改启动页loadData逻辑
因为权限检测是异步操作,需要在进度完成的回调中新增异步处理块,根据权限状态跳转对应页面:
void loadData() { _con.progress.addListener(() { double progress = 0; _con.progress.value.values.forEach((_progress) { progress += _progress; }); if (progress == 100) { try { // 新增异步权限校验逻辑 Future(() async { final locationStatus = await getCurrentLocationStatus(); if (locationStatus == PermissionStatus.granted) { // 已授权,跳转首页 if (mounted) { // 增加mounted判断防止页面销毁后跳转报错 Navigator.of(context).pushNamed('/homepage'); } } else { // 未授权(包含拒绝、永久拒绝状态),跳转权限申请引导页 if (mounted) { Navigator.of(context).pushNamed('/location_permission_request'); } } }); } catch (e) { debugPrint(e.toString()); } } }); }
补充注意事项
- 上述代码中的
/location_permission_request替换为你自己的权限申请页面路由名即可 - 请确保已经提前完成基础配置:
- 项目已引入
permission_handler依赖 - 已在Android的
AndroidManifest.xml、iOS的Info.plist中添加位置权限对应的声明配置
- 项目已引入
内容的提问来源于stack exchange,提问作者Ismail Muhammad
相关产品推荐
相关产品推荐

