对于这个问题毫无意义,我将首先解释我当前的项目结构。对于我所工作的公司,我已经建立了一个平台,可以为我们拥有的每个客户快速构建和自定义应用程序。因此,该项目可以使用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';
对不起,很长的帖子,但我想对整个项目进行解释,以更好地了解当前项目。
我希望有人可以帮助我解决这个问题。
亲切的问候,
凯文·沃尔特
答案 0 :(得分:1)
从lib/
外部导入文件不起作用。这样可以避免将软件包发布到pub.dartlang.org,因为将lib/
和bin/
添加到依赖项后,只会下载它们。
您可以做的是创建一个新程序包,该程序包甚至可以位于另一个程序包的目录(例如my_proj/example/example1
)中或项目外部,然后将其作为依赖项添加到主项目中并使用import "package:example1/example1.dart"
之类的包导入功能从该包中导入文件。
除了示例之类的目的,我不建议使用嵌套包。
将密切相关的软件包作为兄弟姐妹通常是更好的方法。
另请参见