新手求助:如何创建同时支持Flutter与Dart的开发包?
选择
flutter create --template=package还是dart create -t package? 核心差异
dart create -t package:生成纯Dart包,完全独立于Flutter框架。这类包的pubspec.yaml不会包含Flutter相关依赖,代码里也无法调用Flutter的API(比如Widget、BuildContext),仅适用于纯Dart场景(如命令行工具、后端服务)。flutter create --template=package:生成Flutter兼容包,默认引入Flutter依赖,但并非只能用于Flutter项目——只要你合理拆分代码,就能同时支持Flutter和纯Dart场景。
针对“同时支持两者”的实操建议
如果目标是开发跨Flutter、纯Dart的通用包,优先选flutter create --template=package,只需做好以下几点:
- 代码分层:
- 把不依赖Flutter的核心逻辑放在
lib/src/目录,确保这部分代码完全是纯Dart实现,能直接被纯Dart项目引用。 - 把Flutter专属的适配层(比如组件封装、Flutter API调用)放在
lib/根目录或单独的lib/flutter/目录,供Flutter项目调用。
- 把不依赖Flutter的核心逻辑放在
- 依赖配置:
在pubspec.yaml中,将Flutter相关依赖设为可选依赖或仅放在dev_dependencies中(如果只是开发测试需要),避免纯Dart项目引入包时被迫安装Flutter。 - 双环境测试:
分别用dart test运行纯Dart逻辑测试,用flutter test验证Flutter适配层功能,确保两部分都能正常工作。
为什么不选纯Dart包?
如果用dart create -t package生成纯Dart包,后续想添加Flutter相关功能需要手动修改配置、补全Flutter开发环境,灵活性远不如一开始就用Flutter包模板。
内容的提问来源于stack exchange,提问作者fueripe-desu
相关产品推荐
相关产品推荐

