Dart null 安全性

目标与动力

Fuchsia 的 Dart build 已于 2021 年从 dartanalyzer 转换dart analyzedart analyze 支持检查声音 null 性安全性。这意味着运行时 null 解除引用错误可能会变成修改时分析错误。

在检查 Fuchsia 代码是否存在 null 安全性之前编写的 Dart 代码需要迁移,以利用 null 安全检查。我们希望迁移所有 Dart 源代码以支持 null 安全性,因为这将消除 Dart 和 Flutter 应用中的一类运行时错误。

技术背景

使用 null 安全性时,以下代码中的所有变量均不可为 null:

// In null-safe Dart, none of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();

如需指明某个变量的值为 null,只需将 ? 添加到其类型声明中即可:

int? aNullableInt = null;

如需了解详情,请参阅 Dart 的“了解 null 安全性”

如何提供帮助

选择任务

搜索包含 // @dart=2.9TODO(https://fxbug.dev/42165807) 的 Dart 源文件,这些文件都需要迁移。例如,您可以用代码搜索 "// @dart=2.9" lang:dart

执行任务

注意:您可能会在 Dart 分析中看到 import_of_legacy_library_into_null_safe。这意味着其中一个依赖项尚不支持 null 安全性,应先迁移。如果这是第三方依赖项,遗憾的是,我们必须先等待它们完成迁移

确保要迁移的 Dart 源代码已包含在您的 build 中。移除 // @dart=2.9 及其上面的 TODO 行,重新构建,然后关注 Dart 分析中的错误和建议。如需更多建议,请参阅 Dart 的迁移指南

修正 Dart 分析中的所有错误后,将 null_safety = true 添加到包含您迁移的源代码的相应 BUILD.gn 文件中的 build 目标。

完成任务

更改准备就绪后,请将其送交相应所有者审核。 建议您在 Fuchsia 的问题跟踪器中创建一个 bug 来跟踪进度。如果您这样做,请务必将其标记为阻止主要 bug 84961,并在更改合并后将其关闭。

示例

赞助商

如有疑问或了解最新状态,请与我们联系: