cubegao

Flutter 网络层架构设计与封装实践

一、网络层混乱的代价2024 年的一次线上事故,让我意识到网络层必须有统一架构。 事故的过程很简单:用户反馈部分聊天消息发送失败后没有重试,消息状态始终停留在「发送中」。排查后发现原因更简单——网络层没有统一的异常处理和重试策略。 具体来说,当时的项目里有 4 种不同的网络请求方式: 部分 ...

flutter_boost 路由架构设计详解

一、混合栈的诞生背景在 Flutter 的早期阶段,它设计的目标是「全 Flutter 应用」——整个 App 的所有页面都由 Flutter 渲染。但现实是大多数企业级 App 是逐步引入 Flutter 的:现存大量原生页面,新需求逐步用 Flutter 开发。这就产生了混合栈问题——F ...

Flutter 微前端架构探索与实践

一、为什么需要在 Flutter 中讨论「微前端」微前端(Micro Frontends)本质上是将 Web 前端领域的微服务思想引入客户端架构:将单一应用拆分为多个独立的、可独立开发、独立部署、独立运行的子应用,由主框架组合成一个完整应用。 你可能会问:Flutter 是客户端框架,讨论「 ...

Flutter 模块化开发实战指南

一、从一次模块重构看模块化的必要性2024 年 9 月,我们收到一个需求:在聊天页面中增加「语音转文字」功能。这本应是一个独立的功能模块——有自己的一套 UI、数据流、网络请求和缓存策略。 然而,当开发人员打开聊天页面的代码时,发现根本没有「干净的地方」可以插入这个功能。消息列表渲染逻辑、输 ...

Flutter 插件化架构与动态扩展能力

一、被发版卡住的需求2024 年,我们遇到了一个让业务方和客户端团队都很痛苦的场景:工作台中的轻应用(OA 审批、报表、公告等)有频繁的变更需求,但每次变更都必须跟客户端版本一起发布。 App 的发版周期是 2-4 周,iOS 还需要审核。业务方催:「审批流程加一个字段,为什么需要等三周?」 ...

Flutter 组件化架构设计实践

一、一个编译时间超过 8 分钟的 Monorepo2024 年初,我们的企业 IM 项目已经运营了两年,代码仓库膨胀到了一个危险的状态: 单仓库包含 300+ 页面、60+ 业务模块 `flutter pub get` 耗时 2 分钟以上 增量编译时间 3-5 分钟,全量编译超过 8 分钟 ...

Riverpod 源码解析与设计思想

一、从一个盲区开始上一篇文章对比了 Provider、Bloc、Riverpod、GetX 之后,我们最终选择了 Bloc + Provider 混合方案。但在源码评估阶段,Riverpod 的设计给我留下了最深的印象。 它解决了 Provider 的几乎所有已知问题——BuildConte ...

Provider、Bloc、Riverpod、GetX 全面对比:企业 IM 的状态管理选型

一、选型困局:四个方案,一个项目2024 年初,我们的企业 IM 项目面临一个关键决策:统一状态管理方案。 彼时项目已经跑了一年多,早期用 Provider 快速搭建的聊天页面、会话列表、通讯录模块逐渐暴露出问题。部分模块被后来的开发者用 Bloc 重写了,还有一个业务组在用 GetX 做轻 ...

企业级 Flutter 项目分层架构设计

一、从一段「无法测试」的代码说起我们的企业 IM 项目在早期阶段,聊天页面的代码大概是这样的: `class ChatPage extends StatefulWidget { @ove...` 这段代码能跑,但当我们试图为它写单元测试时,问题全部暴露了:数据库操作、网络请 ...

iOS WKWebView 同层渲染方案:让 4K 视频在网页上流畅播放

一、引言 —— 当 4K 视频遇上 Web1.1 业务背景最近我们团队接到一个需求:在公司内部 IM App 里,开发一个快递网点监控轻应用。轻应用类似于微信小程序,本质是 Web 页面,跑在 WKWebView 里。功能上需要实时查看各站点的 4K 监控画面(3840×2160,码率 8- ...
Prev Next