Cubit 或 Bloc 只是装着 Signal 的容器:你到底需要多少 BLoC 与 Signals
来源:dev.to — 2026-10-03
📋 概述
Flutter 社区每隔几年就会陷入状态管理之争:经典 BLoC 阵营看重结构,希望事件表达用户意图、状态变化经过可观测管线,并能用 debounce 等并发工具防止重复点击与竞态;但 BLoC 建立在 Dart Stream 上,读当前状态要跟微任务队列较劲,调试断点常会切断调用栈。Signals 阵营则提供 0 毫秒的即时读取、记忆化的 computed 与细粒度重建,但缺乏架构约束,团队容易把可变信号散落全局、用临时布尔值防重复点击。作者提出一个极简心智模型来终结这场二选一:Cubit 或 Bloc 不过是一个装着并保护 Signal 的容器——前面保留 BLoC 的意图与并发纪律,后面用 Signal 图提供 0 毫秒读取。
🔑 核心要点
- 争论的两个阵营各有硬伤:BLoC 的Stream 读取要跟微任务队列较劲、调试会切断调用栈。
- Signals 提供 0ms 读取、computed 记忆化与细粒度重建,但缺乏架构约束。
- 缺乏结构时团队会把可变信号散落全局、用临时布尔量防止异步重复点击。
- 作者给出的心智模型是:「Cubit 或 Bloc 只是一个装着并保护 Signal 的容器」。
- 结论是不需要再学第三套心智模型,前沿保留 BLoC 纪律,后端交给 Signal 图。
💡 金句
一个 Cubit 或 Bloc,不过是一个持有并保护着 Signal 的容器。
👍 0
👎 0
← 返回 dev.to 首页