gpt4 book ai didi

dart - 在 lib 目录外导入 dart 文件

转载 作者:IT王子 更新时间:2023-10-29 06:33:31 24 4
gpt4 key购买 nike

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

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

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

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

项目
- Assets
- 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';

抱歉发了这么长的帖子,但我想解释一下整个项目,以便更好地理解当前项目。

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

亲切的问候,
凯文沃尔特

最佳答案

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

你可以做的是创建一个新包,它甚至可以位于另一个包的目录中(例如 my_proj/example/example1)或项目之外,然后添加它作为对您的主要项目的依赖,并使用像 import "package:example1/example1.dart" 这样的包导入从该包导入文件。

除了像例子这样的目的,我不鼓励嵌套包。
将密切相关的包作为 sibling 通常是更好的方法。

另见

关于dart - 在 lib 目录外导入 dart 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com