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

Flutter集成google_maps_flutter地图不显示问题求助

Flutter google_maps_flutter 地图空白问题排查与解决

问题描述

在Flutter应用中集成google_maps_flutter包后,界面仅显示空白。相关代码如下:

GoogleMap(
              mapType: MapType.hybrid,
              onTap: (LatLng point) {
                print("object");
                // controller.addPoint(point);
              },
              onMapCreated: (GoogleMapController controller1) {
                print("0########################");
                controller.mapController = controller1;
              },
              initialCameraPosition: CameraPosition(
                target: LatLng(9.9252, 78.1198),
                zoom: 10,
              ),
            ),

运行日志关键信息:

[GETX] CLOSE TO ROUTE /map
V/GoogleMapController(18119): Controller was disposed before GoogleMap was ready.
E/PlatformViewsController(18119): Disposing platform view threw an exception
E/PlatformViewsController(18119): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.LinkedList.isEmpty()' on a null object reference
[GETX] "MapController" onDelete() called

问题分析

  1. 控制器提前销毁:日志中Controller was disposed before GoogleMap was ready明确说明GetX的MapController在谷歌地图组件完成初始化前就被销毁,导致地图无法正常加载。
  2. 生命周期异常:Java层的空指针异常进一步验证了控制器提前销毁后,地图视图的生命周期管理出现错乱。

解决方案

  • 绑定控制器与页面生命周期
    使用GetX时,确保控制器生命周期与页面同步,避免页面未加载完成就销毁控制器:

    // 在页面初始化时绑定控制器,页面销毁时才回收控制器
    final controller = Get.put(MapController(), permanent: false);
    
  • 检查谷歌API配置
    确认AndroidManifest.xml中已正确配置API密钥,且密钥已启用谷歌地图Android SDK服务:

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="你的API密钥"/>
    
  • 优化控制器销毁逻辑
    在MapController的onDelete方法中延迟销毁地图控制器,避免地图未就绪时被回收:

    class MapController extends GetxController {
      GoogleMapController? mapController;
    
      @override
      void onDelete() {
        Future.delayed(const Duration(milliseconds: 500), () {
          mapController?.dispose();
        });
        super.onDelete();
      }
    }
    
  • 排查路由跳转逻辑
    日志中[GETX] CLOSE TO ROUTE /map显示页面可能被意外关闭,检查路由跳转代码,确保地图页面在地图加载完成前不会被销毁。

  • 兼容依赖版本
    检查google_maps_flutter与get包的版本兼容性,尝试切换到稳定版本:

    dependencies:
      google_maps_flutter: ^2.5.0
      get: ^4.6.5
    

内容的提问来源于stack exchange,提问作者Vasanthan Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:58:15