跳到主要內容

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