Dart null 安全性

目标和动力

2021 年,Fuchsia 的 Dart build 从 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=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 文件中的构建目标,该文件包含 来源。

完成任务

更改准备就绪后,将其发送给相应所有者进行审核。 最好在 Fuchsia 的问题跟踪器中创建一个 bug 来跟踪进展情况。如果有, 请务必将其标记为阻止主要 bug 84961; 请在更改合并后关闭它

示例

赞助商

如有疑问或需要更新状态,欢迎与我们联系: