pubspec.yaml引入new_version ^0.2.0执行pub get出现版本依赖冲突报错
问题根因
这个问题既不是Flutter版本问题也不是Dart SDK版本问题,属于三方依赖的公共子依赖版本要求冲突:
new_version ^0.2.0依赖的package_info_plus ^1.0.0要求子依赖plugin_platform_interface ^2.0.0- 项目里固定的
file_picker: 2.1.6要求子依赖plugin_platform_interface ^1.0.1
两个版本范围没有交集,所以版本解算失败。
解决方案
以下三个可选方案,优先推荐第一个,改造成本最低:
方案1:强制覆盖子依赖版本
直接在项目pubspec.yaml的dependency_overrides节点下追加一行配置,强制所有依赖统一使用2.0.0版本的plugin_platform_interface,适配项目已有的Flutter 2.0兼容逻辑:
dependency_overrides: # 原有配置全部保留,新增下面这行 plugin_platform_interface: ^2.0.0
改完重新执行flutter pub get即可,该方案不需要修改任何业务代码,绝大多数场景下不会出现兼容问题。
方案2:升级file_picker版本
将项目里的file_picker: 2.1.6升级到3.0.0及以上版本,该版本范围的file_picker已经适配了plugin_platform_interface ^2.0.0,可以和new_version ^0.2.0兼容。需要注意升级后file_picker的部分API有调整,需要同步修改项目里调用文件选择的相关代码。
方案3:降级new_version版本
选择低于0.0.7版本的new_version,该版本范围的new_version依赖的package_info_plus版本更低,不需要plugin_platform_interface ^2.0.0,可以和file_picker 2.1.6兼容。缺点是低版本的new_version可能存在功能缺失或者已知bug,不推荐优先使用。
内容的提问来源于stack exchange,提问作者Kunal Pitale
相关产品推荐
相关产品推荐

