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