如何解决Dart 2.10 和 `required` 关键字
我对 Dart 和 Flutter 都不熟悉,所以如果这不合时宜,请多多包涵。但是我已经用尽了我的 Googlefu 并没有找到答案。
上下文
我正在运行 Dart 2.10.4 和 Flutter 1.22.5。在这一点上,我只是从 Github 克隆一堆示例应用程序并通过
在本地运行它们- 运行
flutter pub get
- 然后点击在 Android Studio 中运行
我熟悉其他语言的包管理,并阅读了有关与 Dart 潜在差异的文档,特别是
pub get 尽可能使用锁定在其中的依赖项版本 (pubspec.lock)
“如果可能”告诉我 pubspec.lock
文件并不总是受到尊重。我熟悉的行为是“如果不可能”引发错误。
我应该提到,我克隆的所有存储库都不是很新的。它们都有一年多的历史,但最近都有更新。
发生了什么
在所有的项目中,做一个flutter pub get
改变 pubspec.lock
。这些更改都将依赖项升级到 nullsafety
版本。例如,boolean_selector
从 1.0.5
变为 2.1.0-nullsafety.1
。这让我一开始很困惑。深入研究受影响包的 pubspec.yaml
文件发现我的 Dart 版本确实可以满足 SDK 约束,例如boolean_selector。由于 required
关键字,这些版本更改破坏了所有代码库。
问题 1
据我所知,Null-Safety 更改的一部分是 @required
注释变为 required
。我也理解这些变化要到 Dart 2.12 才会出现。那么这里发生了什么?为什么软件包会为 Dart 2.10 发布 nullsafety
个版本?
问题 2
我当前的 Dart 版本可以满足 pubspec.lock
文件。再次使用 boolean_selector
示例。有问题的存储库将其锁定为 1.0.5,其 SDK 约束为 sdk: '>=2.0.0 <3.0.0'
。我正在运行 Dart 2.10。一切都应该没问题。为什么pub get
会强制升级到最新的兼容版本?
问题 3
我想也许 required
是我们可以为 Dart 2.10 启用的实验性功能。我读过 NNBD 和 dart migrate
并尝试过。它似乎对 required
没有任何作用,并且总是会出错。我阅读了 dependency_overrides
以使用更新版本的 analyzer
。我会得到同样的错误。我显然错过了一些东西。如果 Dart 2.10 与 required
(而不是 @required
)兼容,我该如何实现?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。