Flutter执行pub get报错:依赖版本冲突无法解决求助
执行flutter pub get时遭遇依赖版本冲突,错误信息如下:
Because google_maps_webservice 0.0.20-nullsafety.5 depends on http ^0.13.0 and no versions of google_maps_webservice match
0.0.20-nullsafety.5 <0.1.0, google_maps_webservice ^0.0.20-nullsafety.5 requires http ^0.13.0.
And because google_maps_place_picker_mb >=2.0.0-mb.14 depends on google_maps_webservice ^0.0.20-nullsafety.5, google_maps_place_picker_mb
=2.0.0-mb.14 requires http ^0.13.0.
So, because explore_places depends on both http ^1.1.0 and google_maps_place_picker_mb ^3.0.1, version solving failed.
我的依赖配置如下:
依赖覆盖(dependency_overrides)
dependency_overrides: http: 1.1.0 flutter_html: 2.2.1 xml: ^6.3.0 wakelock: ^0.6.2 win32: ^5.0.2 flutter_math_fork: ^0.7.1 flutter_svg: ^1.0.0
谷歌地图相关依赖
maps_launcher: ^2.2.0 geolocator: ^9.0.2 google_maps_flutter: ^2.2.7 google_maps_place_picker_mb: 3.0.1
网络相关依赖
http: ^1.1.0 connectivity_plus: ^4.0.1 cached_network_image: ^3.2.3 html: ^0.15.3 package_info_plus: ^4.0.1 flutter_html: 2.2.1
已尝试以下操作但未解决问题:
- 切换到Flutter稳定频道:
flutter channel stable - 执行依赖升级:
flutter pub upgrade - 重新获取依赖:
flutter pub get
解决方案
问题核心是google_maps_place_picker_mb:3.0.1依赖的google_maps_webservice版本锁定了http ^0.13.0,但项目直接依赖http ^1.1.0且依赖覆盖强制指定http:1.1.0,导致版本冲突。提供两种可行方案:
方案1:降级http版本
将项目中http的依赖版本改为^0.13.0,同时移除依赖覆盖里的http:1.1.0配置,之后重新执行flutter pub get。
修改后的网络相关依赖:
http: ^0.13.0 connectivity_plus: ^4.0.1 cached_network_image: ^3.2.3 html: ^0.15.3 package_info_plus: ^4.0.1 flutter_html: 2.2.1
修改后的依赖覆盖:
dependency_overrides: flutter_html: 2.2.1 xml: ^6.3.0 wakelock: ^0.6.2 win32: ^5.0.2 flutter_math_fork: ^0.7.1 flutter_svg: ^1.0.0
方案2:强制覆盖google_maps_webservice的http依赖
若不想降级http版本,可在dependency_overrides中强制让google_maps_webservice适配http:1.1.0,添加如下配置:
dependency_overrides: http: 1.1.0 google_maps_webservice: git: url: https://github.com/lejard-h/google_maps_webservice.git ref: nullsafety # 选择支持http 1.x的分支/版本 # 保留原有其他覆盖配置
注意:强制覆盖可能引发潜在兼容性问题,需测试谷歌地图相关功能是否正常。
内容的提问来源于stack exchange,提问作者chanwoo Hwang

