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

