跳至主要內容

null_check_on_nullable_type_parameter

穩定
核心
可修正

請勿在可能為 Null 的類型參數上使用 null 檢查。

詳細資訊

#

請勿在可能為 Null 的類型參數上使用 null 檢查。

給定一個具有可 Null 綁定(例如,Object? 的預設綁定)的泛型類型參數 T,當使用 T? 類型的變數時,很容易引入錯誤的 null 檢查。具體來說,常見的情況是擁有 T? x; 並想要斷言 x 已設定為 T 類型的有效值。一個常見的錯誤是使用 x! 這樣做。這幾乎總是錯誤的,因為如果 T 是可 Null 類型,則 x 可能有效地將 null 作為 T 類型的值持有。

錯誤範例

dart
T run<T>(T callback()) {
  T? result;
  (() { result = callback(); })();
  return result!;
}

正確範例

dart
T run<T>(T callback()) {
  T? result;
  (() { result = callback(); })();
  return result as T;
}

啟用

#

若要啟用 null_check_on_nullable_type_parameter 規則,請在 analysis_options.yaml 檔案的 linter > rules 下新增 null_check_on_nullable_type_parameter

analysis_options.yaml
yaml
linter:
  rules:
    - null_check_on_nullable_type_parameter

如果您改為使用 YAML 對應語法來設定 linter 規則,請在 linter > rules 下新增 null_check_on_nullable_type_parameter: true

analysis_options.yaml
yaml
linter:
  rules:
    null_check_on_nullable_type_parameter: true