Flutter包类文件在项目中的可见性

问题描述 投票:0回答:1

我创建了一个 Flutter 包,并在我的 Flutter 项目中使用它。

该包有一个类

FirebaseAuthFlowState
位于
...core/firebase_auth_flow_state.dart
。具有导出功能的包的“根”文件位于
lib
目录中并导出
FirebaseAuthFlowState

当我要在 Flutter 项目中使用类

FirebaseAuthFlowState
时,我的 IDE(VS Code)会告诉我两个可能的导入,两者都有效:

  1. package:firebase_auth_flow/core/firebase_auth_flow_state.dart
  2. package:firebase_auth_flow/firebase_auth_flow.dart

screenshot

我的 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
    导入。
  • 我预计 Flutter 项目中看不到
    ...core/firebase_auth_flow_state.dart
flutter dart package visibility
1个回答
0
投票

我不完全确定,但我相信您应该将文件放入

lib/src/
或其子目录中,以将它们从导入建议中排除。

我之所以这样想是因为我研究了 flutter 本身是如何为其类做到这一点的。我以

ListView
为例,当尝试使用它时,它有以下建议:

enter image description here

选择其中一个导入后,当 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.

这让我认为从那里导入是不正常的,也是为什么它没有出现在建议中,所以这可能就是这样做的方法。

© www.soinside.com 2019 - 2024. All rights reserved.