Flutter:状态管理

Ste*_*ven 0 state-management setstate dart flutter bloc

我看过很多赞扬 Bloc State 管理的教程,它有什么特别之处,我应该作为初学者学习它吗?如果没有,是否有任何初学者友好的状态管理技术?

Exo*_*uid 5

块/肘

\n

BLoC 非常适合复杂应用程序的复杂状态管理。然而,在 BLoC 库中,有一种更简单的状态管理方法,称为 Cubit(Cubit 是 BLoC 的子集)。Cubit 与 BLoC 基本相同,除了:

\n
    \n
  1. 更少的样板文件
  2. \n
  3. 不使用2路流
  4. \n
\n

这使得它更容易学习,并且是进入全面的 BLoC 驱动状态管理解决方案的绝佳垫脚石。

\n

目前,我和我的团队正在构建一个非常复杂的应用程序,我们使用的原则是:使用 Cubits,除非有特定原因需要使用 BLoC。这对我们来说效果很好(我们的应用程序 90% 使用 Cubit 运行,10% 使用 BLoC)。

\n
\n

相对于其他状态管理技术,大多数人可能会推荐 Provider 或 Riverpods(Riverpods = Provider on steroids)。它们比 Cubit/BLoC \xe2\x80\x94容易学习,除了简单的情况(几页应用程序)。一旦您的应用程序变得复杂(身份验证、提要、API 调用等),基于 Cubit/BLoC 的架构将能够更好地扩展并且更加简洁。

\n

此外,生产级 Flutter 应用程序最常用的状态管理系统是 BLoC/Cubit。所以,如果你正在寻找一种适销对路的技能,我会默认这样做。

\n

有用的网址:

\n\n

示例应用程序(理解这一点会对您有很大帮助):

\n

这是我制作的一个简单的 1 功能应用程序,作为概念证明,以展示 Cubit 的具体工作原理。阅读项目的README.md背景信息(给它加星标?)。

\n

结论:

\n

Provider、GetX、Riverpods 等都比 BLoC 更容易学习,并且包含的​​样板文件更少,但当您的应用程序变得更加复杂时,它们的扩展性会变差。

\n

为了帮助解决 BLoC 的样板/复杂性问题,请在设计中使用 Cubits 而不是 BLoC,除非您对 BLoC 有特定需求。

\n