跳到主要内容

invocation_of_extension_without_call

扩展 '{0}' 没有定义 'call' 方法,因此重载不能在调用中使用。

描述

#

当使用扩展重载来调用函数,但扩展没有声明 call 方法时,分析器会产生此诊断。

示例

#

以下代码会产生此诊断,因为扩展 E 没有定义 call 方法

dart
extension E on String {}

void f() {
  E('')();
}

常见修复

#

如果扩展打算定义一个 call 方法,那么就声明它

dart
extension E on String {
  int call() => 0;
}

void f() {
  E('')();
}

如果被扩展的类型定义了 call 方法,那么移除扩展重载。

如果 call 方法没有定义,那么重写代码,使其不调用 call 方法。