两种不同的场景:
场景一:项目使用的依赖版本大于SDK支持的版本
例如项目中使用的 path 依赖时 ^1.7.0 版本,但是SDK最高支持的是 1.6.4,则会报一下错误:
[camera_demo] flutter pub getRunning "flutter pub get" in camera_demo… Because every version of flutter_test from sdk depends on path 1.6.4 and camera_demo depends on path ^1.7.0, flutter_test from sdk is forbidden. So, because camera_demo depends on flutter_test any from sdk, version solving failed. pub get failed (1; So, because camera_demo depends on flutter_test any from sdk, version solving failed.)exit code 1
重点是 :
Because every version of flutter_test from sdk depends on path 1.6.4 and camera_demo depends on path ^1.7.0, flutter_test from sdk is forbidden.
实际意思是 flutter_test
(Flutter测试) 从本地 SDK 中读取到的 path 依赖最高适配的版本是 1.6.4
,但是实际项目中使用的path 依赖是 ^1.7.0
版本的,也就是实际项目中 path 的版本需要较新版本的 SDK 才能正常使用(或者这么理解,本地的 SDK 不能满足 path 的最新版本),所以解决的办法如下:
1.升级 Flutter SDK :
flutter upgrade
2.按照错误信息里面说的版本,在 pubspec.yml 中指定依赖的版本。例如解决以上的错误:
dependencies:
flutter: sdk: flutter
# 创建适配任何平台的路径,指定为 1.6.4 版本
path: 1.6.4
【建议】如果是新项目,建议升级 Flutter 的 SDK 为最新版本,否则建议指定依赖的版本,避免升级 SDK 与团队的环境不一致,导致其他问题而背锅。
场景二:项目使用的依赖版本低于SDK支持的版本
【注】一般来说是向下兼容的,除了某些大的版本升级不兼容。
例如本地SDK支持 collection 依赖
的版本为 1.14.11
,但是实际项目中的依赖低于这个版本,报错信息如下:
Because every version of flutter_test from sdk depends on collection 1.14.11 and flutter_app depends on collection 1.14.6, flutter_test from sdk is forbidden.
So, because flutter_app depends on flutter_test any from sdk, version solving failed.
解决方法如下:
1.如果是新项目,推荐使用最新的依赖,配置如下:
dependencies:
flutter: sdk: flutter
# conllection 依赖, 指定版本为 1.14.11 及最新版本,如果想指定到1.14.11版本,请把 ^ 去掉
# 实际版本可参考错误信息里面提供的版本进行设置
collection: ^1.14.11
2.如果是团队项目的话,请先进行沟通,或者是将自己本地的Flutter SDK与其他同事保持一致。