目标和动力
2021 年,Fuchsia 的 Dart build 从 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=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; 请在更改合并后关闭它
示例
赞助商
如有疑问或需要更新状态,欢迎与我们联系: