跳到主要内容

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