我有一个在null safety was introduced to Dart之前写的Flutter 翼应用程序.
我听说过Null Safety Migration Tooling.在默认情况下,我如何使用它将我的代码从NNBD之前的版本转换为不可为空的?
我有一个在null safety was introduced to Dart之前写的Flutter 翼应用程序.
我听说过Null Safety Migration Tooling.在默认情况下,我如何使用它将我的代码从NNBD之前的版本转换为不可为空的?
你至少需要DART 2.9
.在 compose 本文时,您可以使用2.9.0-10.0.dev
,即在您的pubspec.yaml
中放置以下SDK约束:
environment:
sdk: ">=2.9.0-10.0.dev <3.0.0"
/*?*/
& /*!*/
)The /*?*/
hint means that something should explicitly be nullable.
/*!*/
means that something should be non-nullable.
在使用NNBD之前,您已经可以手动添加这些提示.否则,您可以在迁移期间使用该工具添加它们(请参见下文).
There are ?
, !
, and _
edits.
?
makes a type nullable after migration. _
makes it non-nullable (meaning no character is changed because non-nullable is the default).
!
makes an expression non-nullable.
这些编辑可在迁移工具中预览.
Dart 101加an nnbd_migration
package.
该工具可用于100 convert code至NNBD.
我将介绍这migration steps described in the README个,并尽量简化它们:
在命令行中转到您的项目,使用flatter时运行pub get
或flutter pub get
.(请注意,在 compose 本文时,尚未支持Flatter SDK)
跑100.(请注意,在 compose 本文时,我需要使用--skip-pub-outdated
)
等待analysis and migration完成,然后通过打开浏览器命令行中看到的URL(格式为http://localhost:<port>/<project path>?authToken=<token>
)来完成view migration suggestions.您应该会看到类似这样的内容:
Select 要开始的文件.应该是这样的:
在右侧查看建议的编辑内容(与突出显示的字符匹配):
如果您发现您认为不正确的编辑,Edit Details中的find the root cause:
您可以向下滚动以跟踪导致编辑建议的根表达式.当您在此过程中发现某些错误决策时,您可以按照上面的说明 Select Add /*?*/ hint
或Add /*!*/ hint
(您也可以在IDE中手动添加它们).
如果是edit looks right分,你就得not need to do anything分.
你可能需要上100课很多.这将应用您添加的新提示以及您对代码所做的任何其他编辑,并生成新编辑.执行此操作,直到所有编辑看起来都正确为止.
现在,您可能会看到提示以红色突出显示,这意味着该工具将删除提示并将其转换为?
、!
或空白.
您可能应该在此时保存您的项目(例如,git commit
).
注意:在这一点上,您的代码添加了一系列/*?*/
和/*!*/
个提示以及has not yet been migrated个提示.
100:这将应用建议的编辑并删除所有提示.
现在可能会让迁移工具保持打开状态.
现在,您的代码中不再有任何提示.
测试您的项目(pub get
或flutter pub get
,然后运行).
如果是went wrong,那么让迁移工具保持打开状态会很有帮助. 您可能希望将版本恢复到迁移之前,然后重复这些步骤.
Success!您的项目现在是空的安全??