如何在Dart中导入本地创建的包?附项目结构示例
如何调用同级目录下functions包的函数
没问题,我来一步步教你搞定这个事儿:
先明确你的项目结构
两个文件夹处于同一层级目录下:
. ├── contact_book/ # 主应用 │ ├── bin │ │ └── contact_book.dart │ ├── contact_book.iml │ ├── lib │ │ ├── address.dart │ │ ├── email.dart │ │ ├── field.dart │ │ ├── functions.dart │ │ ├── person.dart │ │ └── phone_number.dart │ ├── pubspec.lock │ └── pubspec.yaml └── functions/ # 独立包 ├── bin │ └── lib │ └── functions.dart ├── functions.iml ├── pubspec.lock └── pubspec.yaml
步骤1:给主应用添加包依赖
首先得让contact_book这个主应用知道functions包的存在。打开contact_book/pubspec.yaml,找到dependencies部分,添加相对路径的依赖:
dependencies: # 保留你原本的其他依赖,比如flutter或其他第三方包 functions: path: ../functions
添加完之后,打开终端进入contact_book目录,执行命令拉取依赖:
cd contact_book dart pub get
(如果是Flutter项目就用flutter pub get)
步骤2:调整functions包的目录结构(重要!)
看你的结构,functions包的functions.dart放在了bin/lib下面,这不符合Dart包的标准结构——Dart会默认从lib目录加载包的代码,所以你得把functions/bin/lib/functions.dart移动到functions/lib/functions.dart,也就是把lib目录直接放在functions根目录下,这样Dart才能正确识别这个文件是包的一部分。
步骤3:在主应用中导入并调用函数
现在就可以在contact_book的代码里导入并调用函数了。比如在contact_book/bin/contact_book.dart里:
// 用package:包名/文件路径的方式导入 import 'package:functions/functions.dart'; void main() { // 假设你的functions.dart里有个叫calculate的函数,直接调用就行 var result = calculate(10, 20); print(result); }
注意:这里的functions是你在functions/pubspec.yaml里定义的name字段值,一定要确保两者一致,不然会报错哦!
内容的提问来源于stack exchange,提问作者ThinkDigital
相关产品推荐
相关产品推荐

