Flutter包类可见性问题:如何限制仅通过根文件导入指定类
解决Flutter包内部目录对外可见的问题
要实现只允许从根导出文件导入FirebaseAuthFlowState,同时隐藏core目录的对外可见性,按以下步骤操作即可:
调整包的目录结构
将原来的lib/core目录整体移动到lib/src/core路径下。Dart包的通用约定是,src目录用于存放内部实现代码,IDE的代码提示和Dart分析器默认不会将该目录下的文件作为公开API的导入选项。更新根导出文件的路径
修改lib/firebase_auth_flow.dart中的导出代码,指向新的内部文件路径:
library firebase_auth_flow; export 'src/core/firebase_auth_flow_state.dart' show FirebaseAuthFlowState;
- 验证效果
重启VS Code(或手动触发Dart分析服务重启),之后在项目中使用FirebaseAuthFlowState时,IDE只会提示package:firebase_auth_flow/firebase_auth_flow.dart这一个合法导入路径。如果强行直接导入src下的文件,Dart分析器会给出警告,提示该路径属于内部实现,不应该被外部直接依赖。
这种做法是Dart官方推荐的包结构规范,既能保证对外API的简洁性,也能避免使用者依赖内部实现导致的后续包更新兼容性问题。
内容的提问来源于stack exchange,提问作者smolikja
相关产品推荐
相关产品推荐

