Flutter新手求助:移动工作目录后依赖冲突致pub get失败
问题根源
你的项目中path_provider ^1.6.5依赖plugin_platform_interface ^1.0.1,而image_picker ^0.8.7依赖的image_picker_platform_interface ^2.6.1要求plugin_platform_interface ^2.1.0,两者版本需求冲突,导致pub get执行失败。
可行解决方案
方案1:升级path_provider到兼容高版本plugin_platform_interface的版本
将path_provider版本从^1.6.5升级到^2.0.0及以上,新版本的path_provider依赖的path_provider_platform_interface已适配plugin_platform_interface ^2.0.0+,可与image_picker的依赖要求匹配。
修改pubspec.yaml中的依赖项:
dependencies: # 保留其他依赖 path_provider: ^2.1.0
方案2:降级image_picker到兼容低版本plugin_platform_interface的版本
若暂不想升级path_provider(比如项目未迁移至null safety),可将image_picker降级到0.8.5,该版本依赖的image_picker_platform_interface ^2.5.0兼容plugin_platform_interface ^1.0.1。
修改pubspec.yaml中的依赖项:
dependencies: # 保留其他依赖 image_picker: ^0.8.5
方案3:用dependency_overrides强制统一plugin_platform_interface版本
在pubspec.yaml末尾添加依赖覆盖规则,强制使用plugin_platform_interface ^2.1.0(需确认path_provider 1.6.5能兼容该高版本,多数场景下兼容,但存在潜在适配风险):
dependency_overrides: plugin_platform_interface: ^2.1.0
操作步骤
- 修改pubspec.yaml对应依赖内容
- 执行
flutter clean清理项目缓存 - 执行
flutter pub get重新拉取依赖
补充提示
移动项目目录后出现的问题,也可先删除项目根目录下的pubspec.lock文件,再执行flutter pub get,缓存的锁文件可能导致版本解析异常。
内容的提问来源于stack exchange,提问作者ShidoNeko

