移动 & PC 全端通用端 (Flutter 5 端同构: Mobile & Desktop)
1. 核心技术栈清单与职责说明
| 架构层级 | 推荐选型 | 职责与功能定位说明 |
|---|---|---|
| 全端统一引擎 | Flutter 3.x (Universal) + Dart 3.x | 一套代码基线同时跨越 Android、iOS、Windows、macOS 与 Linux 5 大主流操作系统 |
| 响应式自适应布局 | flutter_adaptive_scaffold | Google 官方响应式骨架,依据屏幕宽度断点自动折叠与展开侧边导航栏(Rail)与底部导航栏 |
| 依赖注入与解耦 | get_it | 轻量级全局服务定位器,依据当前运行平台条件化注入对应的底层硬件与持久化实现 |
| 统一状态流转 | flutter_bloc (Cubit) | 全端统一业务逻辑控制中心,跨平台 100% 复用核心业务状态流与领域实体模型 |
| 动静三层存储基盘 | flutter_secure_storage + shared_preferences + drift | 敏感凭据走安全沙箱;配置走轻量 KV;跨 5 平台的离线业务大表统一由 SQLite ORM drift 驱动 |
| 条件化桌面增强 | window_manager + tray_manager (条件激活) | 针对桌面平台执行条件化窗口初始化与托盘常驻,移动环境自动跳过,规避平台调用崩溃 |
| 全端路由与网络 | go_router + Dio | 跨端统一声明式路由与带连接池复用的 HTTP 客户端 |
| 全端图片二级缓存 | cached_network_image | 全端通用的网络图片二级缓存引擎,消除重复下载,保障大屏与手机端流畅加载 |
| 全端中文本地化 | flutter_localizations (SDK内置) + intl | 跨 5 平台统一直出中文原生组件,消除日期选择器与输入框上下文菜单英文残留 |
| 中文拼音与索引 | lpinyin | 跨端统一的拼音与 A-Z 索引中枢,手机端驱动字母条触控滑动,桌面端支持拼音搜索快速过滤 |
2. 核心选型考量与技术优势
- 一套代码通吃 5 大操作系统:全端代码复用率高达 85%~95%;宽屏桌面端自动呈现侧边导航与多栏内容区,手机窄屏自动转换为底部导航与单列流式视图。
- 条件化防御隔离与依赖注入机制:
- 通过
get_it实现全端领域逻辑与平台外设的解耦,运行时基于Platform检测动态绑定桌面窗口控制或移动专属外设; - 彻底隔离平台专有 API,做到真正的优雅跨端与平滑自适应。
- 通过
- 全平台一致的中文本土化体验(0MB 回退链):
- 全端配置自适应中文字体回退链
fontFamilyFallback: ['PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', 'sans-serif'],在 iOS/macOS 调苹方、Windows 调微软雅黑、Android/Linux 调思源,全端零体积膨胀; lpinyin在手机端驱动通讯录/分类列表的 A-Z 字母侧栏滑动,在桌面端宽屏场景无缝配合键盘事件实现拼音快速输入过滤。
- 全端配置自适应中文字体回退链
- 5 端 100% 复用的离线数据库(drift):
drift天然跨 Android、iOS、Windows、macOS 与 Linux 5 大平台编译,抹平底层 SQLite 差异;- 移动端与桌面端共享同一套离线表结构、DAO 与响应式 Stream 查询逻辑,离线数据模型代码复用率达 100%。
- 单一研发团队全场景覆盖:企业无需组建独立的 iOS、Android、Windows、macOS 四套研发团队,一个人或一支精简团队即可维护全端产品矩阵。
3. 适用业务场景
- 团队研发资源有限,但产品战略必须同时覆盖手机移动端与 PC 桌面端的应用(如协同办公、即时通讯、笔记知识库、全端协同看板);
- 多端业务实体与网络请求 100% 重合、界面布局依据屏幕尺寸动态伸缩响应的复合型商业软件。
4. 局限性与权衡说明
- 局限性:兼顾 5 端需要投入更多的响应式断点设计心智;对于仅面向手机的专属交互或仅面向 PC 的复杂多视窗管理,同构代码容易产生过多条件分支。
- 权衡建议:若项目只做手机端请坚决选用第 05 节;若只做 PC 桌面端请选用第 06/07 节;唯有确需多端一体化同构时才选用本方案。