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
相关产品推荐
相关产品推荐

