在 Flutter 中,Dependencies 必须指定版本号?

Posted

技术标签:

【中文标题】在 Flutter 中,Dependencies 必须指定版本号?【英文标题】:In Flutter, Dependencies must specify version number? 【发布时间】:2018-11-05 02:38:48 【问题描述】:

通常,您必须添加类似

的内容
dependencies:
  camera: "^0.2.0"

到 pubspec.yaml 文件。如果我不包含版本号会怎样?这是一件小事,但通常,我会找到一段代码并想对其进行测试。在顶部,我看到类似 >>

的内容
import 'package:camera/camera.dart';

我必须到包的主页才能找到版本号吗?

【问题讨论】:

【参考方案1】:

您可以使用any

dependencies:
  camera: any

具有更严格的约束使packages get/packages upgrade 更容易搜索匹配的版本,因为它减少了解决方案空间,但对于简单的示例,这通常无关紧要。

pub 最近得到了一个改进的求解器,这使得 any 的问题比以前少得多,在使用 any 时,pub 通常只是超时。

【讨论】:

注意:你也可以使用git链接。 感谢@Günter Zöchbauer【参考方案2】:

根据https://www.dartlang.org/tools/pub/dependencies

根据你要提供什么数据,可以指定依赖 有两种方式。 最短的方法是指定一个名称:

dependencies:
  transmogrify:

这会创建对 允许任何版本的 transmogrify 的依赖, 并使用默认源 pub.dartlang.org 进行查找。 要将依赖关系限制为一系列版本,您可以提供 版本约束:

依赖: 幻化:^1.0.0

这会使用默认源创建对 transmogrify 的依赖,并且 允许从 1.0.0 到 2.0.0 的任何版本(但不包括 2.0.0)。 有关版本的详细信息,请参阅版本约束和插入符号语法 约束语法。

我想我的问题的真正答案通常是,最好指定主要版本号比率例如:^1.0.0 == 1.0.0 。这就是说这个程序可以工作并经过测试,只要没有重大变化,就会继续使用这个库依赖。

【讨论】:

这是不是意味着,dependencies: transmogrify: 会使用这个包的最新版本? @AliAzad 是的,transmogrify: 将使用最新版本。【参考方案3】:

使用traditional syntax 的版本约束是以下一系列:

任何 字符串 any 允许任何版本。这等效于空版本约束,但更明确。 虽然any是允许的,但我们不建议这样做

1.2.3

一个具体的版本号将依赖项固定为仅允许该确切版本。尽可能避免使用它,因为它可能会导致用户的版本锁定,并使他们难以将您的包与其他依赖它的包一起使用。

>=1.2.3

允许给定版本或任何更高版本。您通常会使用它。

>1.2.3

允许任何大于指定版本的版本,但不允许该版本本身。

允许任何低于或等于指定版本的版本。您通常不会使用它。

允许低于指定版本的任何版本,但不允许该版本本身。这是您通常使用的,因为它可以让您指定您知道不适用于您的包的更高版本(因为它是第一个引入一些重大更改的版本)。

您可以根据需要指定版本部分,并且它们的范围相交。例如,'>=1.2.3 ' 允许从 1.2.32.0.0 的任何版本,不包括 2.0.0 本身。表达此范围的更简单方法是使用插入符号语法或 ^1.2.3

注意:如果 > 字符在版本约束中,请务必引用约束字符串,因此该字符不会被解释为 YAML 语法。例如,永远不要使用 >=1.2.3 ;改为使用 '>=1.2.3 ' 或 ^1.2.3

【讨论】:

以上是关于在 Flutter 中,Dependencies 必须指定版本号?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

Flutter 初始化 gradle 和 Resolving dependencies 需要很长时间

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

9Flutter 实现 生成二维码

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support(代