未定義的擴充套件方法
方法 '{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();
}