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

通常,您必须添加类似

的内容
dependencies:
  camera: "^0.2.0"

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

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

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

【问题讨论】:

    标签: dart flutter


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-21
      • 2017-12-29
      • 2020-10-01
      • 2019-07-29
      • 2019-07-11
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      相关资源
      最近更新 更多