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);