延迟导入库并带有 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();
}