Architecture Flutter App the Bloc_Redux Way

💡 原文中文,约7200字,阅读约需17分钟。
📝

内容提要

本文讨论了 Flutter 中的状态管理方案:flutter_redux 和 flutter_bloc。flutter_redux 是 Redux 在 Flutter 的实现,但效率较低;而 flutter_bloc 复杂度高且处理状态时存在不足。作者提出了 Bloc_Redux 解决方案,通过将状态分为输入和输出,利用 StreamBuilder 提高效率,使组件更灵活地响应状态变化。

🎯

关键要点

  • flutter_redux 是 Redux 在 Flutter 的官方实现,由 StoreProvider 和 StoreConnector 组成,但效率较低。

  • flutter_bloc 是对 Flutter 提出的 bloc 概念的实现,复杂度高且在处理状态时存在不足。

  • 两者都无法高效地处理状态变化,导致组件不必要的重建。

  • 作者提出了 Bloc_Redux 解决方案,通过将状态分为输入和输出,利用 StreamBuilder 提高效率。

  • Bloc_Redux 允许 Widget 自行选择监听哪些流,从而更灵活地响应状态变化。

  • Store 负责接收信息并做出决策,而信息的处理者是各个 Bloc,简化了状态管理的复杂性。

延伸问答

什么是 flutter_redux?

flutter_redux 是 Redux 在 Flutter 的官方实现,由 StoreProvider 和 StoreConnector 组成,但效率较低。

flutter_bloc 的复杂性体现在什么方面?

flutter_bloc 的复杂性体现在增加了新的概念,如 BlocSupervisor 和 BlocDelegate,且在处理状态时没有进行有效的状态比较。

Bloc_Redux 解决方案是如何提高效率的?

Bloc_Redux 通过将状态分为输入和输出,利用 StreamBuilder 让组件更灵活地响应状态变化,从而提高效率。

为什么 flutter_redux 和 flutter_bloc 无法高效处理状态变化?

因为这两者在状态更新时会导致所有连接的组件重新构建,无法有效区分状态变化的属性。

Bloc_Redux 如何简化状态管理的复杂性?

Bloc_Redux 通过将状态处理者分为多个 Bloc,简化了状态管理的复杂性,使得每个 Bloc 只关注特定的状态变化。

在 Bloc_Redux 中,Store 的角色是什么?

在 Bloc_Redux 中,Store 负责接收信息并做出决策,同时管理多个 Bloc 的状态更新。

➡️

继续阅读