跳到主要內容

undefined_extension_getter

擴充套件 '{1}' 未定義 getter '{0}'。

描述

#

當使用擴充套件覆蓋 (extension override) 呼叫 getter,但該 getter 未由指定的擴充套件定義時,分析器將生成此診斷。當引用靜態 getter 但其未由指定的擴充套件定義時,分析器也會生成此診斷。

示例

#

以下程式碼將生成此診斷,因為擴充套件 E 未宣告名為 b 的例項 getter。

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

extension F on String {
  String get b => 'b';
}

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

以下程式碼將生成此診斷,因為擴充套件 E 未宣告名為 a 的靜態 getter。

dart
extension E on String {}

var x = E.a;

常見修復方法

#

如果 getter 的名稱不正確,請將其更改為現有 getter 的名稱。

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

extension F on String {
  String get b => 'b';
}

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

如果 getter 的名稱正確但擴充套件的名稱錯誤,請將擴充套件的名稱更改為正確的名稱。

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

extension F on String {
  String get b => 'b';
}

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

如果 getter 和擴充套件的名稱都正確,但 getter 未定義,則請定義該 getter。

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

extension F on String {
  String get b => 'b';
}

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