延遲匯入庫並帶有 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();
}