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
子句中,或直接移除导出声明来实现。