目标与动力
Fuchsia 的 Dart build 已于 2021 年从 dartanalyzer
转换到 dart
analyze
。dart 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.9
或 TODO(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,并在更改合并后将其关闭。
示例
赞助商
如有疑问或了解最新状态,请与我们联系: