Dart 空值安全

目標與激勵

Fuchsia 的 Dart 版本在 2021 年從 dartanalyzer 轉換至 dart analyzedart analyze 支援檢查空值安全性。這表示執行階段空值去參照錯誤可能會變成編輯時間分析錯誤。

在檢查 Fuchsia 程式碼前編寫的 Dart 程式碼,確認是否有空值安全問題,因此必須遷移程式碼才能使用空值安全檢查功能。我們想要遷移所有 Dart 來源以支援空值安全性,因為這樣可以消除 Dart 和 Flutter 應用程式中的整個執行階段錯誤。

技術背景

使用空值安全時,以下程式碼中的所有變數都不可為空值:

// 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 的「瞭解空值安全性」一文。

如何提供協助

挑選工作

搜尋包含 // @dart=2.9TODO(https://fxbug.dev/42165807) 的 Dart 來源檔案,這些檔案都必須遷移。舉例來說,您可以搜尋 "// @dart=2.9" lang:dart 的程式碼。

執行工作

注意:您可能會在 Dart 分析中看到 import_of_legacy_library_into_null_safe。這表示其中一個依附元件尚不支援空值安全性,因此應該先遷移。如果這種情況屬於第三方依附元件,我們有必要等待他們先遷移

確認您要遷移的 Dart 來源已包含在您的建構中。移除 // @dart=2.9 和上方的 TODO 行,重新建立程式碼,然後追蹤 Dart 分析中的錯誤和建議。如需更多建議,請參閱 Dart 遷移指南

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

完成工作

變更準備就緒後,請將內容傳送給對應的擁有者進行審查。 您也可以在 Fuchsia 的 Issue Tracker 中建立錯誤來追蹤進度。如果您這麼做,請務必將其標示為會封鎖主要錯誤 84961,並在變更合併後再關閉。

範例

贊助商

提出問題或查看最新狀態: