跳至主要内容

extension_override_without_access

扩展重载(extension override)只能用于访问实例成员。

描述

#

当分析器发现扩展重载未使用来访问扩展的成员时,会产生此诊断。扩展重载语法没有运行时语义;它只控制在编译时选择哪个成员。

示例

#

以下代码产生此诊断是因为 E(i) 不是一个表达式

dart
extension E on int {
  int get a => 0;
}

void f(int i) {
  print(E(i));
}

常见修复方法

#

如果您想调用扩展的成员,请添加调用

dart
extension E on int {
  int get a => 0;
}

void f(int i) {
  print(E(i).a);
}

如果您不想调用成员,请解开(unwrap)参数

dart
extension E on int {
  int get a => 0;
}

void f(int i) {
  print(i);
}