如何在Dart服务端项目与Flutter客户端项目间共享类?
共享Dart服务端与Flutter客户端的Model类方案
这里有几种实用方案,能让你在两个项目里复用同一套Model类:
1. 抽成独立本地Dart包(最推荐,适配所有场景)
- 把
lib/model里的所有文件抽出来,单独建一个Dart包项目,结构示例:shared_models/ lib/ models/ user.dart order.dart // 其他model文件 shared_models.dart // 统一导出所有model,方便引用 pubspec.yaml - 在
shared_models.dart里添加导出语句,比如:export 'models/user.dart'; export 'models/order.dart'; - 配置
shared_models的pubspec.yaml,填写基础信息和必要依赖(比如如果用了json_serializable,就把相关依赖加上) - 在服务端和客户端的
pubspec.yaml里添加本地依赖:dependencies: shared_models: path: ../shared_models # 根据你的实际相对路径调整,比如共享包在同级目录就这么写 - 之后两边项目都可以通过
import 'package:shared_models/shared_models.dart';直接使用所有Model类,修改Model只需要在共享包里操作,两边同步生效。
2. Git子模块(适合多人协作场景)
如果你的项目用Git管理,可以把Model文件夹作为独立Git仓库,然后用子模块嵌入到两个项目中:
- 在服务端项目根目录执行:
git submodule add <你的Model仓库Git地址> lib/model - 客户端项目执行同样的命令,确保路径和原
lib/model一致,这样原有代码的import路径不用修改 - 拉取项目代码时,需要同步子模块:
git submodule update --init --recursive - 更新Model代码时,进入子模块目录提交变更,然后在主项目里拉取子模块的最新版本:
git submodule update --remote
3. 本地符号链接(个人本地开发快速方案)
适合自己本地开发时临时用,不用改项目结构:
- Unix/Linux/macOS:在客户端项目的
lib目录下执行ln -s /绝对路径/到/server项目/lib/model model - Windows:用管理员权限打开命令提示符,执行
mklink /D 客户端项目路径\lib\model 服务端项目路径\lib\model - 这种方式直接复用原文件夹,代码不用改,但跨系统或者多人协作时不适用,因为符号链接依赖本地路径。
内容的提问来源于stack exchange,提问作者aguiadouro
相关产品推荐
相关产品推荐

