繁体   English   中英

在 lib 目录外导入 dart 文件

[英]Import dart file outside lib directory

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

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

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';

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

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

亲切的问候,
凯文沃尔特

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

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

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

也可以看看

接受的答案是正确的答案。
就我而言,我仍然需要导入一个文件。 (仅用于调试目的)

import 'file:///Users/uesr_name/Desktop/flutterPlugin/flutterPlugin/lib/file.dart';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM