Flutter 2.8.1中LatLng/LatLngBounds方法未定义问题求助
解决Flutter固定版本下Google Maps LatLng传参错误(关联2024年渲染器自动更新)
问题背景
- 基于Flutter 2.8.1(必须保留)、Dart 2.15.1、
google_maps_flutter: ^2.1.12开发的应用原本正常运行,近期未做代码改动,却出现向LatLng传递经纬度时出错的问题 - 怀疑问题触发原因是Google官方通知的「2024年3月4日起,基于Android版Maps SDK构建的应用将自动更新至最新渲染器」
- 已尝试操作:更新Google控制台API密钥、执行
flutter clean清理缓存、flutter pub get重新安装依赖,问题未解决
针对性解决方案
1. 锁定Android端Maps SDK版本,避免自动更新
打开Android项目app/build.gradle,在dependencies块中添加固定版本的Maps SDK依赖,强制使用与旧版google_maps_flutter兼容的原生SDK版本,绕过自动更新的最新渲染器:
dependencies { // 保留原有依赖,新增以下行 implementation 'com.google.android.gms:play-services-maps:18.1.0' }
执行flutter clean && flutter pub get后重新编译运行。
2. 增加LatLng参数合法性校验
最新渲染器对参数的校验逻辑更严格,即使之前正常的数据也可能触发错误,需在代码中添加参数校验:
// 从数据库获取经纬度后先校验 double? dbLatitude = ...; double? dbLongitude = ...; if (dbLatitude != null && dbLongitude != null && dbLatitude >= -90 && dbLatitude <= 90 && dbLongitude >= -180 && dbLongitude <= 180) { final validLatLng = LatLng(dbLatitude, dbLongitude); // 后续地图操作 } else { // 记录错误并处理非法数据 print('非法经纬度参数: $dbLatitude, $dbLongitude'); }
3. 强制启用旧版渲染器(备选方案)
如果锁定SDK版本无效,可在AndroidManifest.xml中添加配置,强制使用旧版渲染器:
<application> <!-- 其他已有配置 --> <meta-data android:name="com.google.android.gms.maps.v2.force_old_renderer" android:value="true" /> </application>
内容的提问来源于stack exchange,提问作者prfsnl
相关产品推荐
相关产品推荐

