跳到主要内容

argument_type_not_assignable

参数 '{0}' 的类型无法赋值给参数 '{1}' 的类型。{2}

描述

#

当参数的静态类型无法赋值给相应形参的静态类型时,分析器会产生此诊断消息。

示例

#

以下代码会产生此诊断消息,因为 num 类型无法赋值给 String 类型

dart
String f(String x) => x;
String g(num y) => f(y);

常见修复方法

#

如果可能,重写代码,使其静态类型可赋值。在上面的示例中,你可能可以更改参数 y 的类型。

dart
String f(String x) => x;
String g(String y) => f(y);

如果此修复方法不可行,则添加代码来处理参数值不是所需类型的情况。一种方法是将其他类型强制转换为所需类型。

dart
String f(String x) => x;
String g(num y) => f(y.toString());

另一种方法是添加显式类型测试和备用代码。

dart
String f(String x) => x;
String g(Object y) => f(y is String ? y : '');

如果你认为参数的运行时类型始终与形参的静态类型相同,并且愿意承担如果判断错误可能在运行时抛出异常的风险,那么可以添加显式类型转换。

dart
String f(String x) => x;
String g(num y) => f(y as String);