Flutter 报错: Because every version of flutter_test from sdk depends on xxx, xxx depends on path xxx,flutter_test from sdk is forbidden.

两种不同的场景:

场景一:项目使用的依赖版本大于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与其他同事保持一致。

发表评论

邮箱地址不会被公开。 必填项已用*标注