跳到主要內容

延遲匯入庫並帶有 load 函式 (import_deferred_library_with_load_function)

匯入的庫定義了一個名為“loadLibrary”的頂層函式,該函式在延遲匯入此庫時被隱藏。

描述

#

當使用延遲匯入方式匯入一個聲明瞭名為 loadLibrary 的函式的庫時,分析器會產生此診斷。延遲匯入會引入一個隱式的名為 loadLibrary 的函式。此函式用於載入延遲庫的內容,並且隱式函式會隱藏延遲庫中的顯式宣告。

欲瞭解更多資訊,請參閱 延遲載入庫

示例

#

假設有一個檔案 a.dart,其中定義了一個名為 loadLibrary 的函式

dart
void loadLibrary(Library library) {}

class Library {}

以下程式碼會產生此診斷,因為隱式宣告的 a.loadLibrary 隱藏了 a.dart 中顯式宣告的 loadLibrary

dart
import 'a.dart' deferred as a;

void f() {
  a.Library();
}

常見修復方法

#

如果匯入的庫不需要延遲載入,則移除關鍵字 deferred

dart
import 'a.dart' as a;

void f() {
  a.Library();
}

如果匯入的庫需要延遲載入,並且您需要引用匯入的函式,則重新命名匯入庫中的函式

dart
void populateLibrary(Library library) {}

class Library {}

如果匯入的庫需要延遲載入,並且您不需要引用匯入的函式,則新增一個 hide 子句

dart
import 'a.dart' deferred as a hide loadLibrary;

void f() {
  a.Library();
}