undefined_extension_setter
擴充套件 '{1}' 中未定義設定器 '{0}'。
描述
#當使用擴充套件重寫 (extension override) 呼叫設定器,但該設定器未在指定擴充套件中定義時,分析器會生成此診斷。當引用靜態設定器但其未在指定擴充套件中定義時,分析器也會生成此診斷。
示例
#以下程式碼會產生此診斷,因為擴充套件 E 未宣告名為 b 的例項設定器
dart
extension E on String {
set a(String v) {}
}
extension F on String {
set b(String v) {}
}
void f() {
E('c').b = 'd';
}以下程式碼會產生此診斷,因為擴充套件 E 未宣告名為 a 的靜態設定器
dart
extension E on String {}
void f() {
E.a = 3;
}常見修復方法
#如果設定器的名稱不正確,請將其更改為現有設定器的名稱
dart
extension E on String {
set a(String v) {}
}
extension F on String {
set b(String v) {}
}
void f() {
E('c').a = 'd';
}如果設定器的名稱正確,但擴充套件的名稱錯誤,請將擴充套件的名稱更改為正確的名稱
dart
extension E on String {
set a(String v) {}
}
extension F on String {
set b(String v) {}
}
void f() {
F('c').b = 'd';
}如果設定器和擴充套件的名稱都正確,但設定器未定義,請定義該設定器
dart
extension E on String {
set a(String v) {}
set b(String v) {}
}
extension F on String {
set b(String v) {}
}
void f() {
E('c').b = 'd';
}