You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:45:41