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