跳到主要内容

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