如何在Flutter中启用Null-Safety?

dphi5xsq  于 2023-03-24  发布在  Flutter
关注(0)|答案(8)|浏览(308)

我尝试使用null safety,但它给了我这个错误:
这需要启用“不可空”语言功能。请尝试更新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,...

35g0bw71

35g0bw711#

当您升级正在使用的Flutter版本时可能会发生这种情况。
尝试将以下内容添加到analysis_options.yml

analyzer:
    - enable-experiment:
        - non-nullable

然后,再次尝试清理和升级项目依赖项。
为此,您可以使用以下命令:

flutter clean
flutter packages pub upgrade
flutter pub run build_runner build

最后,重新启动IDE。
顺便说一下,确保你使用的sdk与你的Flutter版本兼容

7kqas0il

7kqas0il2#

根据Dart文档,我能够通过以下步骤在Flutter中启用空安全性:
首先添加analysis_options.yaml

analyzer:
  enable-experiment:
    - non-nullable

然后转到dev频道并升级:

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)。
然后它工作正常。

pieyvz9o

pieyvz9o3#

1.在pubspec.yaml文件中将较低的Dart SDK约束设置为2.12

environment:
  sdk: ">=2.12.0 <3.0.0"

1.检查您的应用程序的所有包是否已迁移到null安全。

dart pub outdated --mode=null-safety

1.如果它们被迁移,则将所有包更新为其空安全变量。

dart pub upgrade --null-safety 
dart pub get

1.开始迁移过程。

dart migrate

如果您对这些更改感到满意,请使用以下命令应用它们:

dart migrate --apply-changes
g9icjywg

g9icjywg4#

我已经做了以上所有的工作,但是由于某种原因,分析器仍然给出了一个关于启用null安全的错误。对我来说,解决这个问题的方法是运行pub upgrade而不是pub get。我甚至不打算去找原因,我只是要回去工作!

0sgqnhkj

0sgqnhkj5#

我确认即使在2022年它仍然工作这样做...
环境:SDK:“〉=2.12.0〈3.0.0”

xzv2uavs

xzv2uavs6#

从 * Dart 2.12开始,空值安全 * 不再是一个实验**。现在很容易启用。

开启空值安全

从第一个Dart 2.12版本开始,types将默认为不可空。所以你只需要修改你的SDK约束:

environment:
  sdk: ">=2.12.0 <3.0.0"

在dart.dev上了解有关“启用空安全”的更多信息。

sigwle7e

sigwle7e7#

要启用空值安全,
1.检查最新的Dart版本(应该是Dart 2.12或更高版本:)

dart --version

1.更新dart版本,使用命令不满足上述点。

dart pub upgrade --null-safety

dart pub get

1.运行下面的命令来了解项目中哪些库需要升级到最新的null safety。

dart pub outdated --mode=null-safety

latest列显示当前版本,如果它是绿色的,这意味着依赖实现了空安全功能,如果它是红色的,那么依赖所有者需要实现它。

1.最后,运行dart migration命令,对现有项目(Existing project)执行空安全迁移

dart migrate

1.如果您的包已准备好迁移,则该工具将生成如下所示的行:
通过访问以下网站查看迁移建议:
http://127.0.0.1:60278/Users/you/project/mypkg.console-simple?authToken=Xfz0jvpyeMI%3D

**注意:**即使运行upgrade --null-safety命令,您也会看到最新列部分为红色,这意味着某个依赖尚未支持null安全,因此您无法迁移该项目。

详情请参阅:https://dart.dev/null-safety/migration-guide

lsmepo6l

lsmepo6l8#

Flutter 2.0.0Stable之后,可以在approot文件夹下运行:

dart migrate --apply-changes

相关问题