在lib目录外导入dart文件

时间:2019-01-15 10:28:47

标签: dart flutter

对于这个问题毫无意义,我将首先解释我当前的项目结构。对于我所工作的公司,我已经建立了一个平台,可以为我们拥有的每个客户快速构建和自定义应用程序。因此,该项目可以使用2个存储库。

1)应用程序存储库
该存储库包含该应用程序的所有可自定义文件。它基本上是整个flutter项目,没有lib和test目录。

2)核心存储库
为了使应用程序正常运行,核心存储库已加载到应用程序存储库中。 (包含所有.dart文件)。我们这样做是因为,如果我们对核心进行了更改,则可以通过在核心上执行简单的git pull来更新所有正在创建的应用程序。

现在出现了我不知道的部分。现在,我们有一个客户想要在应用程序中自定义功能。我们无法再次使用此功能,因此我想将这段代码添加到应用程序存储库中。这是文件结构(仅显示所需内容)

项目
 -资产
 -customLib(用于客户的自定义工作的文件,是应用程序回购的一部分)
 -lib(此目录中的所有文件均来自核心存储库)
 -测试(此目录中的所有文件均来自核心存储库)
 -pubspec.yaml

我正在核心文件中加载的文件之一。
这是文件/lib/Library/ModuleRouter.dart
像这样加载:import'../../customLib/customLibs.dart';
尝试什么都没有关系,但是当我超出main.dart放置范围的范围时,根本找不到代码。这些文件虽然存在。

这是我从编译器得到的错误:

Compiler message:
Error: Invalid package URI 'package:/customLib/customLibs.dart':
  Invalid argument (packageUri): Package URIs must not start with a '/': Instance of '_SimpleUri'.
lib/Library/ModuleRouter.dart:25:8: Error: Not found: 'package:/customLib/customLibs.dart'
import '../../customLib/customLibs.dart';

对不起,很长的帖子,但我想对整个项目进行解释,以更好地了解当前项目。

我希望有人可以帮助我解决这个问题。

亲切的问候,
凯文·沃尔特

1 个答案:

答案 0 :(得分:1)

lib/外部导入文件不起作用。这样可以避免将软件包发布到pub.dartlang.org,因为将lib/bin/添加到依赖项后,只会下载它们。

您可以做的是创建一个新程序包,该程序包甚至可以位于另一个程序包的目录(例如my_proj/example/example1)中或项目外部,然后将其作为依赖项添加到主项目中并使用import "package:example1/example1.dart"之类的包导入功能从该包中导入文件。

除了示例之类的目的,我不建议使用嵌套包。
将密切相关的软件包作为兄弟姐妹通常是更好的方法。

另请参见

相关问题