跳到主要内容

invalid_export_of_internal_element_indirectly

成员 '{0}' 不能作为软件包公共 API 的一部分导出,但作为 '{1}' 签名的一部分被间接导出。

描述

#

当一个 公共库 导出一个顶级函数,并且该函数的返回类型或至少一个参数类型被标记了 internal 注解时,分析器会产生此诊断。

示例

#

假设 src 目录中有一个文件 a.dart,其内容如下:

dart
import 'package:meta/meta.dart';

@internal
typedef IntFunction = int Function();

int f(IntFunction g) => g();

以下代码会产生此诊断,因为函数 f 的参数类型为 IntFunction,而 IntFunction 仅供内部使用。

dart
export 'src/a.dart' show f;

常见修复方法

#

如果该函数必须是公共的,则将其签名中的所有类型都设为公共类型。

如果该函数不需要导出,则停止导出它,可以通过从 show 子句中移除它、将其添加到 hide 子句中,或直接移除导出声明来实现。