[英]How to enable Null-Safety in Flutter?
从Dart 2.12
空安全不再是一个实验。 现在很容易启用。
从第一个 Dart 2.12
版本开始,默认情况下类型将是不可为空的。 所以你只需要改变你的 SDK 约束:
environment:
sdk: ">=2.12.0 <3.0.0"
在 dart.dev 上了解有关“启用空安全”的更多信息。
要启用空安全,
检查最新的 Dart 版本(应该是 Dart 2.12 或更高版本:)
dart --version
更新dart版本,使用命令不满足以上几点。
dart pub upgrade --null-safety dart pub get
运行以下命令以了解您的项目中有哪些库需要升级到最新的空安全。
dart pub outdated --mode=null-safety
最新的列显示当前版本,如果它是绿色的,这意味着依赖项实现了空安全特性,如果它是红色的,那么依赖项所有者需要实现它。
最后,运行 dart 迁移命令,该命令对现有项目(现有项目)执行空安全迁移
dart migrate
如果您的包已准备好迁移,则该工具会生成如下一行:
通过访问查看迁移建议:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D
注意:即使在运行upgrade --null-safety
命令后,您upgrade --null-safety
看到最新的列部分为红色,这意味着特定依赖项尚未支持空安全,因此您无法迁移项目。
详细阅读: https : //dart.dev/null-safety/migration-guide
关于空安全实施的好博客: https : //medium.com/flutterworld/flutter-null-safety-5d20012c2441
在Flutter 2.0.0 Stable 之后,您可以在应用程序根文件夹中运行:
dart migrate --apply-changes
当您升级正在使用的 Flutter 版本时,可能会发生这种情况。
尝试将以下内容添加到 analysis_options.yml
analyzer:
- enable-experiment:
- non-nullable
然后,再次尝试清理和升级项目依赖项。
为此,您可以使用以下命令:
flutter clean
flutter packages pub upgrade
flutter pub run build_runner build
最后,重新启动您的 IDE。
Ps 顺便说一下,请确保您使用的 sdk 与您的 Flutter 版本兼容
按照Dart 文档,我能够通过以下步骤在 Flutter 中启用空安全:
首先添加analysis_options.yaml
:
analyzer:
enable-experiment:
- non-nullable
然后转到开发频道并升级:
flutter channel dev
flutter upgrade
更改pubspec.yaml
的 sdk
environment:
sdk: ">=2.11.0-213.0.dev <2.12.0"
清理项目:
flutter clean
flutter pub get
重新启动 IDE(在我的例子中是 VS Code)。
然后它工作正常。
我已完成上述所有操作,但出于某种原因,分析器仍然给出有关启用空安全的错误。 对我来说修复它的是运行 pub upgrade 而不是 pub get。 我什至不去试图找出原因,我只是要回去工作!
在pubspec.yaml
文件中将较低的 Dart SDK 约束设置为2.12
。
environment: sdk: ">=2.12.0 <3.0.0"
检查您的应用程序的所有包是否都迁移到空安全。
dart pub outdated --mode=null-safety
如果它们被迁移,请将所有包更新为其空安全变体。
dart pub upgrade --null-safety dart pub get
开始迁移过程。
dart migrate
如果您对更改感到满意,请使用以下方法应用它们:
dart migrate --apply-changes
我确认即使在 2022 年它仍然可以这样做......
环境:SDK:“>=2.12.0 <3.0.0”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.