跳到主要内容

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