如何在 Flutter 中启用空安全?
How to enable Null-Safety in Flutter?
我尝试使用 null safety,但它给了我这个错误:
This requires the 'non-nullable' language feature to be enabled. Try
updating your pubspec.yaml to set the minimum SDK constraint to 2.10.0
or higher, and running 'pub get'.
我将我的 Dart SDK 约束从 2.7.0
更改为 2.10.0
,但它仍然显示此错误。
此外,我升级了我的 Dart 和 Flutter SDK:
dart-sdk v2.10.2 is the latest version available based on your
source(s).
Flutter (Channel stable, 1.22.3, ...
升级您正在使用的 Flutter 版本时可能会发生这种情况。
尝试将以下内容添加到 analysis_options.yml
analyzer:
- enable-experiment:
- non-nullable
然后,再次尝试清理和升级项目依赖项。
为此,您可以使用以下命令:
flutter clean
flutter packages pub upgrade
flutter pub run build_runner build
最后,重新启动您的 IDE。
P.s。顺便说一句,请确保您使用的 sdk 与您的 Flutter 版本兼容
按照 Dart documentation 我能够通过以下步骤在 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)。
然后一切正常。
从 Dart 2.12
开始,零安全性不再是实验 。现在很容易启用。
启用空安全
从第一个 Dart 2.12
版本开始,类型默认为 不可空 。所以你只需要改变你的SDK约束:
environment:
sdk: ">=2.12.0 <3.0.0"
我已经完成了上述所有操作,但出于某种原因,分析器仍然给出有关启用空安全的错误。为我修复的是 运行 pub upgrade 而不是 pub get。我什至不打算找出原因,我只是回去工作!
在 Flutter 2.0.0 稳定之后你可以 运行 在应用 root 文件夹中:
dart migrate --apply-changes
要启用空安全,
查看最新的Dart版本(应该是Dart 2.12或更高版本:)
dart --version
更新dart版本,以上几点不满足使用命令
dart pub upgrade --null-safety
dart pub get
运行 下面的命令可以知道你的项目中有哪些库需要升级到最新的 null safety。
dart pub outdated --mode=null-safety
latest 列显示当前版本,如果它是绿色的,这意味着依赖项实现了空安全功能,如果它是红色的,那么依赖项所有者需要实现它。
最后,运行 dart migration 命令对现有项目(Existing project)执行空安全迁移
dart migrate
如果您的包已准备好迁移,则该工具会生成如下一行:
通过访问查看迁移建议:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D
注意: 即使在 运行ning upgrade --null-safety
命令之后,您会看到最新的列部分为红色,这意味着特定的依赖项不支持null safety 还没有,所以这意味着你不能迁移项目。
详情阅读:https://dart.dev/null-safety/migration-guide
关于空安全实施的好博客:https://medium.com/flutterworld/flutter-null-safety-5d20012c2441
在您的 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
我尝试使用 null safety,但它给了我这个错误:
This requires the 'non-nullable' language feature to be enabled. Try updating your pubspec.yaml to set the minimum SDK constraint to 2.10.0 or higher, and running 'pub get'.
我将我的 Dart SDK 约束从 2.7.0
更改为 2.10.0
,但它仍然显示此错误。
此外,我升级了我的 Dart 和 Flutter SDK:
dart-sdk v2.10.2 is the latest version available based on your source(s).
Flutter (Channel stable, 1.22.3, ...
升级您正在使用的 Flutter 版本时可能会发生这种情况。
尝试将以下内容添加到 analysis_options.yml
analyzer:
- enable-experiment:
- non-nullable
然后,再次尝试清理和升级项目依赖项。
为此,您可以使用以下命令:
flutter clean
flutter packages pub upgrade
flutter pub run build_runner build
最后,重新启动您的 IDE。
P.s。顺便说一句,请确保您使用的 sdk 与您的 Flutter 版本兼容
按照 Dart documentation 我能够通过以下步骤在 Flutter 中启用空安全:
先加analysis_options.yaml
:
analyzer:
enable-experiment:
- non-nullable
然后转到开发者频道并升级:
flutter channel dev
flutter upgrade
更改pubspec.yaml
environment:
sdk: ">=2.11.0-213.0.dev <2.12.0"
清理项目:
flutter clean
flutter pub get
重新启动 IDE(在我的例子中是 VS Code)。
然后一切正常。
从 Dart 2.12
开始,零安全性不再是实验 。现在很容易启用。
启用空安全
从第一个 Dart 2.12
版本开始,类型默认为 不可空 。所以你只需要改变你的SDK约束:
environment:
sdk: ">=2.12.0 <3.0.0"
我已经完成了上述所有操作,但出于某种原因,分析器仍然给出有关启用空安全的错误。为我修复的是 运行 pub upgrade 而不是 pub get。我什至不打算找出原因,我只是回去工作!
在 Flutter 2.0.0 稳定之后你可以 运行 在应用 root 文件夹中:
dart migrate --apply-changes
要启用空安全,
查看最新的Dart版本(应该是Dart 2.12或更高版本:)
dart --version
更新dart版本,以上几点不满足使用命令
dart pub upgrade --null-safety dart pub get
运行 下面的命令可以知道你的项目中有哪些库需要升级到最新的 null safety。
dart pub outdated --mode=null-safety
latest 列显示当前版本,如果它是绿色的,这意味着依赖项实现了空安全功能,如果它是红色的,那么依赖项所有者需要实现它。
最后,运行 dart migration 命令对现有项目(Existing project)执行空安全迁移
dart migrate
如果您的包已准备好迁移,则该工具会生成如下一行:
通过访问查看迁移建议:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D
注意: 即使在 运行ning upgrade --null-safety
命令之后,您会看到最新的列部分为红色,这意味着特定的依赖项不支持null safety 还没有,所以这意味着你不能迁移项目。
详情阅读:https://dart.dev/null-safety/migration-guide
关于空安全实施的好博客:https://medium.com/flutterworld/flutter-null-safety-5d20012c2441
在您的
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