我尝试使用空安全,但它给了我这个错误:
这需要启用“不可为空”语言功能。尝试更新您的 pubspec.yaml 以将最小 SDK 约束设置为 2.10.0 或更高版本,然后运行“pub get”。
我将我的 Dart SDK 约束从 更改2.7.0
为2.10.0
,但它仍然显示此错误。
另外,我升级了我的 Dart 和 Flutter SDK:
dart-sdk v2.10.2 是基于您的源代码可用的最新版本。
Flutter(通道稳定,1.22.3,...
我尝试使用空安全,但它给了我这个错误:
这需要启用“不可为空”语言功能。尝试更新您的 pubspec.yaml 以将最小 SDK 约束设置为 2.10.0 或更高版本,然后运行“pub get”。
我将我的 Dart SDK 约束从 更改2.7.0
为2.10.0
,但它仍然显示此错误。
另外,我升级了我的 Dart 和 Flutter SDK:
dart-sdk v2.10.2 是基于您的源代码可用的最新版本。
Flutter(通道稳定,1.22.3,...
从Dart开始,空安全不再是一项实验 。现在很容易启用。2.12
从第一个 Dart2.12
版本开始,默认情况下类型将不可为空。所以你只需要改变你的 SDK 约束:
environment:
sdk: ">=2.12.0 <3.0.0"
在 dart.dev 上了解有关“启用 null 安全性”的更多信息。
To Enable null safety,
Check Latest Dart Version(It should be Dart 2.12 or later:)
dart --version
Update the dart version, the above point not satisfied using the command.
dart pub upgrade --null-safety
dart pub get
Run the below command to know what are libs in your project needs to be upgraded to the latest null safety.
dart pub outdated --mode=null-safety
The latest column shows the current version if it's in green that means dependency implemented null safety features if it red then the dependency owner needs to implement that.
Finally, run dart migration command which performs null safety migration on existing project(Existing project)
dart migrate
If your package is ready to migrate, then the tool produces a line like the following:
View the migration suggestions by visiting:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D
Note: Even after running upgrade --null-safety
command, you see the latest column section in red, which means a particular dependency hasn't supported null safety yet, so that means you cannot migrate the project.
for detail read: https://dart.dev/null-safety/migration-guide
Good blog on Implementation of Null Safety: 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 中启用 null 安全性:
首先添加analysis_options.yaml
:
analyzer:
enable-experiment:
- non-nullable
然后转到开发频道并升级:
flutter channel dev
flutter upgrade
更改sdkpubspec.yaml
environment:
sdk: ">=2.11.0-213.0.dev <2.12.0"
清理项目:
flutter clean
flutter pub get
重新启动 IDE(在我的例子中是 VS Code)。
然后它工作正常。
我已经完成了上述所有操作,但由于某种原因,分析器仍然给出了关于启用空安全性的错误。为我解决的问题是运行 pub upgrade 而不是 pub get。我什至不会试图找出原因,我只是要回去工作!
2.12
在您的pubspec.yaml
文件中设置较低的 Dart SDK 约束。
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