为什么 pubspec 环境 / sdk / 使用 " '>=2.7.0 <3.0.0' " 而不是 " ^2.7.0 "

问题描述

我对semver的理解非常有限

这个

environment:
  sdk: ^2.7.0

相当于这个

environment:
  sdk: '>=2.7.0 <3.0.0'

此格式严格执行包发布

Package validation found the following error:
* ^ version constraints aren't allowed for SDK constraints since older versions of pub don't support them.
  Expand it manually instead:
  
  environment:
    sdk: ">=2.7.0 <3.0.0"
Sorry,your package is missing a requirement and can't be published yet.

Flutter 是否有任何理由使用 latter 代替 former 方法

可以说哪个更熟悉consistent

解决方法

一些定义:

  • ^2.7.0Caret syntax
  • >=2.7.0 <3.0.0Traditional syntax

并基于 documentation

因为在 Dart 1.8.3 中引入了插入符号语法,它需要一个 SDK 约束(使用传统语法)以确保旧版本的 pub 不会尝试处理它。例如:

environment:
  sdk: '>=1.8.3 <3.0.0'

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...