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

Google Map刷新内容时出现黑屏闪烁后加载地图的问题

GoogleMap刷新时黑屏闪烁的解决办法
  • 添加地图加载占位图
    在GoogleMap外层嵌套Stack,默认显示与地图风格匹配的占位元素(比如浅灰色背景或静态地图截图),待地图加载完成后再隐藏。可通过onMapCreated回调控制占位图的显示状态:
Stack(
  children: [
    // 初始显示的占位背景
    Container(color: Colors.grey[200]),
    GoogleMap(
      myLocationEnabled: false,
      zoomControlsEnabled: false,
      zoomGesturesEnabled: true,
      myLocationButtonEnabled: false,
      mapType: MapType.normal,
      initialCameraPosition: _kGooglePlex,
      onMapCreated: (GoogleMapController controller) {
        googleMapController = controller;
        // 地图创建完成后更新状态隐藏占位图
        setState(() => _mapLoaded = true);
        // 异步执行定位,避免阻塞地图渲染
        Future.microtask(getCurrentLocation);
      },
      onCameraMove: (CameraPosition cameraPositions) {
        cameraPosition = cameraPositions;
      },
      padding: const EdgeInsets.only(bottom: 15, left: 50),
      onCameraIdle: _getAddress,
    ),
    // 未加载完成时显示占位层
    if (!_mapLoaded)
      Container(
        color: Colors.grey[200],
        width: double.infinity,
        height: double.infinity,
      ),
  ],
)
  • 优化初始化逻辑
    将onMapCreated中的耗时操作(比如定位请求)放到异步任务中执行,避免阻塞地图渲染流程,减少黑屏出现的概率。

  • 统一容器背景色
    给GoogleMap的父容器设置与地图默认背景接近的颜色(如Colors.white),弱化黑屏闪烁的视觉感受。

  • 减少不必要的组件重建
    检查代码中是否存在频繁触发setState导致GoogleMap重复重建的情况,优化状态管理,仅在地图核心数据(标记点、相机位置)变化时更新状态。

内容的提问来源于stack exchange,提问作者Ravin Laheri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:05:30