跳到主要內容

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 方法。