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

未定義の拡張メソッド

拡張機能「{1}」にメソッド「{0}」は定義されていません。

説明

#

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

#

以下のコードは、拡張機能Eに名前がbのインスタンスメソッドが宣言されていないため、この診断を生成します。

dart
extension E on String {
  String a() => 'a';
}

extension F on String {
  String b() => 'b';
}

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

以下のコードは、拡張機能Eに名前がaの静的メソッドが宣言されていないため、この診断を生成します。

dart
extension E on String {}

var x = E.a();

一般的な修正

#

メソッド名が間違っている場合は、既存のメソッドの名前に変更してください。

dart
extension E on String {
  String a() => 'a';
}

extension F on String {
  String b() => 'b';
}

void f() {
  E('c').a();
}

メソッド名が正しいが、拡張機能名が間違っている場合は、拡張機能名を正しい名前に変更してください。

dart
extension E on String {
  String a() => 'a';
}

extension F on String {
  String b() => 'b';
}

void f() {
  F('c').b();
}

メソッド名と拡張機能名が両方とも正しいが、メソッドが定義されていない場合は、メソッドを定義してください。

dart
extension E on String {
  String a() => 'a';
  String b() => 'z';
}

extension F on String {
  String b() => 'b';
}

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