GitHub克隆的Flutter项目运行报pub依赖版本冲突该如何解决
错误原因
这类报错属于Pub依赖版本求解失败,核心逻辑和无法用pub get修复的原因如下:
- 所有发布到Pub的包都会在自身配置中声明依赖的其他包的兼容版本范围,你当前项目中同时依赖的两个包出现了依赖范围互斥的情况:
flutter_svg ^0.19.3间接依赖petitparser ^3.0.0,而git源的intl_translation依赖petitparser ^4.0.0,不存在任何一个版本的petitparser可以同时满足两个约束条件,因此版本求解器直接终止运行。 pub get的作用仅为根据你在pubspec.yaml中声明的依赖范围,拉取匹配的最高兼容版本,没有权限自动修改你设定的依赖约束,因此无法解决这种范围互斥的冲突问题。
解决方法
这类冲突有三种常用的修复方案,可以按实际需求选择:
- 方案1:强制覆盖依赖版本
在pubspec.yaml的根层级添加dependency_overrides节点,强制整个项目使用统一版本的冲突依赖:
dependency_overrides: petitparser: ^4.0.0
提示:该方案属于强制兼容,若后续运行时出现API调用错误,可以调整强制指定的版本号,或者修改报错位置的适配代码
- 方案2:升级冲突依赖到兼容版本
将flutter_svg升级到^0.22.0及以上版本,该版本区间的flutter_svg已经适配了petitparser 4.0+,可以和当前git源的intl_translation正常兼容。 - 方案3:替换冲突的依赖来源
如果没有必须使用git源intl_translation的特殊需求,可以将其替换为Pub上的intl_translation: ^0.17.0正式版本,该版本适配petitparser ^3.0.0,可以和flutter_svg ^0.19.3正常兼容。
内容的提问来源于stack exchange,提问作者yasin moosavi
相关产品推荐
相关产品推荐

