我有一个 Flutter 应用程序,它是在空安全引入 Dart之前编写的。
我听说过Null Safety Migration Tooling并想知道如何使用它将我的代码从 NNBD 之前的代码默认转换为不可为空。
cre*_*not 14
你至少需要 Dart 2.9。在撰写本文时,您可以使用2.9.0-10.0.dev,即在您的 中放置以下 SDK 约束pubspec.yaml:
environment:
sdk: ">=2.9.0-10.0.dev <3.0.0"
Run Code Online (Sandbox Code Playgroud)
/*?*/& /*!*/)该/*?*/提示手段的东西应该明确的是可为空。
/*!*/意味着某些东西应该是不可为空的。
您可以在使用 NNBD 之前手动添加这些提示。否则,您可以在迁移期间使用该工具添加它们(见下文)。
还有?,!和_编辑。在迁移后
?使类型可以为空。_使其不可为空(意味着没有字符被更改,因为不可为空是默认值)。
!使表达式不可为空。
这些编辑在迁移工具中预览。
Dart2.9带有一个nnbd_migration包。
此工具可用于将代码交互转换为 NNBD。
pub get或flutter pub get在使用 Flutter 时。(请注意,在撰写本文时,尚不支持 Flutter SDK)dart migrate。(请注意,在撰写本文时,我需要使用--skip-pub-outdated)http://localhost:<port>/<project path>?authToken=<token>。您应该会看到如下内容:您可以向下滚动以跟踪导致编辑建议的根表达式。当您在此过程中的某处发现一些错误的决定时,您可以Add /*?*/ hint或Add /*!*/ hint如上所述(您也可以在您的 IDE 中手动添加它们)。
如果编辑看起来正确,则无需执行任何操作。
你可能需要Rerun From Sources很多。这将应用您添加的新提示以及您对代码所做的任何其他编辑,并生成新的编辑。这样做直到所有编辑看起来都正确。
现在,你可能会看到提示以红色突出显示,这意味着该工具将删除的提示,并转换到任何一个?,!或空白。
此时您可能应该保存您的项目(例如git commit)。
注意:此时,您的代码有一堆添加/*?*/和/*!*/提示,尚未迁移。
Apply Migration:这将应用建议的编辑并删除所有提示。可能暂时让迁移工具保持打开状态。
现在,您的代码中不再有任何提示。
测试您的项目(pub get或flutter pub get然后运行)。
如果出现问题,让迁移工具保持打开状态会很有帮助。
您可能希望将版本恢复到迁移之前并重复这些步骤。
成功!您的项目现在是空安全的
| 归档时间: |
|
| 查看次数: |
4050 次 |
| 最近记录: |