未定义的扩展方法
方法 '{0}' 未在扩展 '{1}' 中定义。
描述
#当使用扩展覆盖来调用方法,但该方法未在指定的扩展中定义时,分析器会生成此诊断。当引用静态方法但该方法未在指定的扩展中定义时,分析器也会生成此诊断。
示例
#以下代码会生成此诊断,因为扩展 E
未声明名为 b
的实例方法
dart
extension E on String {
String a() => 'a';
}
extension F on String {
String b() => 'b';
}
void f() {
E('c').b();
}
以下代码会生成此诊断,因为扩展 E
未声明名为 a
的静态方法
dart
extension E on String {}
var x = E.a();
常见修复
#如果方法名称不正确,请将其更改为现有方法的名称
dart
extension E on String {
String a() => 'a';
}
extension F on String {
String b() => 'b';
}
void f() {
E('c').a();
}
如果方法名称正确,但扩展名称错误,请将扩展名称更改为正确的名称
dart
extension E on String {
String a() => 'a';
}
extension F on String {
String b() => 'b';
}
void f() {
F('c').b();
}
如果方法和扩展的名称都正确,但方法未定义,请定义该方法
dart
extension E on String {
String a() => 'a';
String b() => 'z';
}
extension F on String {
String b() => 'b';
}
void f() {
E('c').b();
}