在 lib 目录外导入 dart 文件

Kev*_*ter 9 dart flutter

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

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

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

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

project
-assets
-customLib(为客户定制工作的文件,app repo的一部分)-lib(
这个目录下的所有文件都来自core repo)-test(这个目录下的
所有文件都来自core回购)
- 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';
Run Code Online (Sandbox Code Playgroud)

很抱歉这篇长文章,但我想解释整个项目以更好地理解当前项目。

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

亲切的问候,
凯文沃尔特

Gün*_*uer 6

从外部导入文件lib/不应该起作用。这将阻止将包发布到 pub.dartlang.org,因为只有在添加到依赖项时才会下载lib/bin/

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

除了示例之类的目的外,我不鼓励嵌套包。
将密切相关的包作为兄弟姐妹通常是更好的方法。

也可以看看

  • 创建一个新包效果很好!感谢您的信息! (2认同)