我创建了一个 Flutter 包,并在我的 Flutter 项目中使用它。
该包有一个类
FirebaseAuthFlowState
位于 ...core/firebase_auth_flow_state.dart
。具有导出功能的包的“根”文件位于 lib
目录中并导出 FirebaseAuthFlowState
。
当我要在 Flutter 项目中使用类
FirebaseAuthFlowState
时,我的 IDE(VS Code)会告诉我两个可能的导入,两者都有效:
package:firebase_auth_flow/core/firebase_auth_flow_state.dart
package:firebase_auth_flow/firebase_auth_flow.dart
library firebase_auth_flow;
export 'package:firebase_auth_flow/core/firebase_auth_flow_state.dart'
show FirebaseAuthFlowState;
package:firebase_auth_flow/firebase_auth_flow.dart
导入。...core/firebase_auth_flow_state.dart
。我不完全确定,但我相信您应该将文件放入
lib/src/
或其子目录中,以将它们从导入建议中排除。
我之所以这样想是因为我研究了 flutter 本身是如何为其类做到这一点的。我以
ListView
为例,当尝试使用它时,它有以下建议:
选择其中一个导入后,当 Ctrl+单击
ListView
时,我发现 ListView
实际上位于
<my_flutter_directory>\packages\flutter\lib\src\widgets\scroll_view.dart
所以我自己想“我真的可以直接从那里导入它吗?”答案是肯定的。我删除了建议的导入并写了这个:
import 'package:flutter/src/widgets/scroll_view.dart';
虽然 IDE 给出以下警告,但它按预期工作
Import of a library in the 'lib/src' directory of another package.
这让我认为从那里导入是不正常的,也是为什么它没有出现在建议中,所以这可能就是这样做的方法。