把异步边界推离视图:为什么 FutureBuilder 和 StreamBuilder 是反模式
来源:dev.to — 2026-08-26
📋 概述
作者论证把 FutureBuilder 或 StreamBuilder 直接塞进 widget 树是对 Flutter 核心架构「UI = ƒ(State)」的违背。应用规模增长后,这些「视图内异步」会出现分层塌陷、意外重取、抖动闪烁和测试噩梦四大致命缺陷。他主张把异步边界推到架构边缘,用 AsyncSignal、CubitSignal、BlocSignal 等状态管理把网络与异步编排从表现层剥离。
🔑 核心要点
- Flutter 组件应是状态的纯同步投影,视图内放异步会破坏这一契约
- 四大致命缺陷:分层塌陷、重建导致意外重取、兄弟组件乱序闪烁、widget 测试难写
- 在 build() 里实例化 future 会让每次重建都重新触发网络请求
- 把连接状态、错误处理、缓存、重试这些编排职责从视图里拿走
- 用状态管理(AsyncSignal/CubitSignal/BlocSignal)把异步边界推到架构边缘
💡 金句
一个能力更强的模型跑得更久、完成更多任务,也会完成更多你没要求的任务。
👍 0
👎 0
← 返回 dev.to 首页