跳到主要內容

unchecked_use_of_nullable_value

可空表示式不能用作條件。

可空表示式不能在 for-in 迴圈中用作迭代器。

可空表示式不能用於展開運算子。

可空表示式不能用於 yield-each 語句。

該函式不能無條件呼叫,因為它可能為 'null'。

方法 '{0}' 不能無條件呼叫,因為接收者可能為 'null'。

運算子 '{0}' 不能無條件呼叫,因為接收者可能為 'null'。

屬性 '{0}' 不能無條件訪問,因為接收者可能為 'null'。

描述

#

分析器在型別為可能不可空的表示式在未首先驗證值不為 null 的情況下被解引用時產生此診斷。

示例

#

以下程式碼產生此診斷,因為 s 在被引用時可能為 null

dart
void f(String? s) {
  if (s.length > 3) {
    // ...
  }
}

常見修復方法

#

如果該值確實可能為 null,則新增一個測試以確保僅在值不為 null 時訪問其成員

dart
void f(String? s) {
  if (s != null && s.length > 3) {
    // ...
  }
}

如果表示式是變數且該值不應為 null,則將變數的型別更改為不可空型別

dart
void f(String s) {
  if (s.length > 3) {
    // ...
  }
}

如果您認為表示式的值不應為 null,但無法更改變數的型別,並且願意承擔錯誤時執行時丟擲異常的風險,則可以斷言該值不為 null

dart
void f(String? s) {
  if (s!.length > 3) {
    // ...
  }
}