メインコンテンツにスキップ

undefined_extension_setter

セッター '{0}' は拡張機能 '{1}' で定義されていません。

説明

#

拡張機能のオーバーライドを使用してセッターを呼び出そうとしたが、指定された拡張機能にセッターが定義されていない場合に、アナライザーはこの診断を生成します。また、静的セッターを参照したが、指定された拡張機能に定義されていない場合にも、アナライザーはこの診断を生成します。

#

以下のコードは、拡張機能 Eb という名前のインスタンスセッターを宣言していないため、この診断を生成します。

dart
extension E on String {
  set a(String v) {}
}

extension F on String {
  set b(String v) {}
}

void f() {
  E('c').b = 'd';
}

以下のコードは、拡張機能 Ea という名前の静的セッターを宣言していないため、この診断を生成します。

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