跳到主要内容

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