Dart 空值安全

目標和動力

Fuchsia 的 Dart 版本在 2021 年從 dartanalyzer 轉換dart analyzedart analyze支援檢查功能 「給予空值安全」。也就是說 空值解析錯誤可能會變成編輯時間分析錯誤。

檢查 Fuchsia 程式碼前編寫的 Dart 程式碼,需經過無空值安全檢查 使用空值安全檢查功能我們希望遷移 所有支援空值安全性的 Dart 來源,因為這樣會刪除整個類別 執行階段錯誤。

技術背景

若是空值安全性,下列程式碼中的所有變數均不可為空值:

// 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();

如要表示變數可能含有空值,只要在其類型中加入 ? 即可 宣告:

int? aNullableInt = null;

查看小達的 「瞭解空值安全性」, 瞭解詳情

如何提供協助

選取工作

搜尋包含 // @dart=2.9TODO(https://fxbug.dev/42165807),所有檔案都必須遷移。適用對象 比方說,你可以編寫程式碼搜尋 "// @dart=2.9" lang:dart

執行工作

注意:您可能會在 Dart 分析中看到 import_of_legacy_library_into_null_safe。 這表示其中一個依附元件尚不支援空值安全性,且 先進行遷移如果這種情況是第三方依附元件 遺憾的是 等待他們先遷移

確認您要遷移的 Dart 來源為 包含在版本中。 移除 // @dart=2.9 和上方的 TODO 行、重新建構,然後追蹤錯誤 以及來自 Dart 分析的建議詳情請見 如需更多建議,請參閱 Dart 遷移指南

修正 Dart 分析中的所有錯誤後,請將 null_safety = true 新增至包含以下項目的對應 BUILD.gn 檔案中的建構目標: 您遷移的來源。

完成工作

變更完成後,請送交對應的擁有者進行審查。 建議您在 Fuchsia 的 Issue Tracker 中建立錯誤,以便追蹤進度。如果有 請務必將其標示為封鎖主要錯誤 84961。 變更合併後即可關閉此政策

範例

贊助者

如有問題或想掌握最新狀態,請與我們聯絡: