gpt4 book ai didi

flutter - 如何将 Dart 代码迁移到不可为空 (NNBD)?

转载 作者:行者123 更新时间:2023-12-03 02:39:51 25 4
gpt4 key购买 nike

我有一个之前写的 Flutter 应用程序 null safety was introduced to Dart .

我听说过 空安全迁移工具 并且想知道如何使用它默认将我的代码从 NNBD 之前转换为不可为空。

最佳答案

你至少需要 Dart 2.9 .在撰写本文时,您可以使用 2.9.0-10.0.dev ,即将以下 SDK 约束放入您的 pubspec.yaml :

environment:
sdk: ">=2.9.0-10.0.dev <3.0.0"

提示 ( /*?*/ & /*!*/ )
/*?*/提示意味着某些内容应该明确可以为空。 /*!*/意味着某些东西应该是不可为空的。

您可以在使用 NNBD 之前手动添加这些提示。否则,您可以在迁移期间使用该工具添加它们(见下文)。

编辑

? , ! , 和 _编辑。 ?在迁移后使类型可以为空。 _使其不可为空(意味着没有字符被更改,因为不可为空是 默认值 )。 !使表达式不可为空。

这些编辑在迁移工具中预览。

使用工具

Dart 2.9 自带 an nnbd_migration package .
此工具可用于 交互式 将代码转换为 NNBD。

我会覆盖 migration steps described in the README并尝试简化它们:
  • 在命令行中转到您的项目并运行 pub getflutter pub get使用 flutter 时。 (请注意,在撰写本文时,尚不支持 Flutter SDK)
  • 运行 dart migrate . (请注意,在撰写本文时,我需要使用 --skip-pub-outdated )
  • 等待分析和迁移完成,然后 查看迁移建议 通过打开您在浏览器的命令行中看到的 URL(格式 http://localhost:<port>/<project path>?authToken=<token>)。您应该会看到如下内容:

  • null safety preview
  • 选择一个文件开始。它应该看起来像这样:

  • opened file
  • 查看右侧的建议编辑(匹配突出显示的字符):

  • proposed edits
  • 如果您发现您认为不正确的编辑,找出根本原因 在编辑详细信息中:

  • details

    您可以向下滚动以跟踪导致编辑建议的根表达式。当你在过程中的某个地方发现一些错误的决定时,你要么 Add /*?*/ hintAdd /*!*/ hint如上所述(您也可以在 IDE 中手动添加它们)。

    如果编辑看起来正确,你做 不需要做任何事情 .
  • 您可能需要 Rerun From Sources 很多。这将应用您添加的新提示以及您对代码所做的任何其他编辑,并生成新的编辑。这样做直到所有编辑看起来都正确。

    现在,您可能会看到以红色突出显示的提示,这意味着该工具将删除提示并将它们转换为 ? , ! ,或空白。
  • 此时您可能应该保存您的项目(例如 git commit )。

    注意:此时,您的代码添加了一堆 /*?*//*!*/提示,尚未迁移。
  • Apply Migration :这将应用建议的编辑并删除所有提示。
    可能暂时让迁移工具保持打开状态。

    现在,您的代码中不再有任何提示。
  • 测试您的项目( pub getflutter pub get 然后运行)。

    如果出现问题,让迁移工具保持打开状态会很有帮助。
    您可能希望将版本恢复到迁移之前并重复这些步骤。
  • 成功 !你的项目现在是空安全的🙌🏽
  • 关于flutter - 如何将 Dart 代码迁移到不可为空 (NNBD)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62148950/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com