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}) {}