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';
}