跳到主要內容

missing_default_value_for_parameter

引數 '{0}' 不能取值為 'null',因為其型別不相容,但隱式預設值是 'null'。

使用空安全時,請使用 'required' 關鍵字,而不是 '@required' 註解。

描述

#

當可選引數(無論是位置引數還是命名引數)具有 潛在非空 型別且未指定預設值時,分析器會生成此診斷訊息。沒有顯式預設值的可選引數會有一個隱式預設值 null。如果引數的型別不允許該引數取值為 null,則隱式預設值無效。

示例

#

以下程式碼會產生此診斷訊息,因為 x 不能是 null,並且未指定非 null 的預設值

dart
void f([int x]) {}

此程式碼也如此

dart
void g({int x}) {}

常見修復方法

#

如果您想使用 null 表示未提供值,則需要將型別設定為可空

dart
void f([int? x]) {}
void g({int? x}) {}

如果引數不能為 null,則要麼提供預設值

dart
void f([int x = 1]) {}
void g({int x = 2}) {}

要麼將引數設為必需引數

dart
void f(int x) {}
void g({required int x}) {}