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

Flutter切换底部导航栏页面崩溃求助(关联Google Map)

问题解决:添加Google Map后底部导航切换页面崩溃

核心原因推测

Google Map控件的资源未正确释放(比如GoogleMapController未调用dispose),或者底部导航的页面缓存机制导致Map页面资源泄漏,切换时触发内存异常。

解决方案

1. 正确销毁GoogleMapController

在包含Google Map的页面State类中,重写dispose方法,手动销毁控制器,避免资源泄漏:

class MapPageState extends State<MapPage> {
  GoogleMapController? _controller;

  @override
  void dispose() {
    // 销毁Map控制器,释放底层资源
    _controller?.dispose();
    super.dispose();
  }

  // 页面其余代码...
}

2. 调整底部导航的页面加载方式

如果底部导航使用IndexedStack缓存页面,会导致Map页面始终驻留内存,切换时容易引发资源冲突。改成动态创建页面:

// 底部导航的页面切换逻辑
Widget get currentPage {
  switch (_selectedIndex) {
    case 0:
      return MapPage(); // 每次切换到该索引时重新创建页面
    case 1:
      return MessagePage();
    // 其他页面的case分支...
    default:
      return Container();
  }
}

// 在Scaffold的body中使用currentPage
body: currentPage,

3. 查看崩溃日志定位具体问题

如果以上方法无效,优先查看控制台的崩溃日志:

  • 检查是否有空指针异常、资源泄漏相关报错
  • 确认Google Map的API Key配置正确,位置权限已申请并授予

内容的提问来源于stack exchange,提问作者Buğra Aykan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:39:34