【问题标题】:Flutter: State management颤振:状态管理
【发布时间】:2023-01-31 17:52:29
【问题描述】:

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

【问题讨论】:

  • 从 provider 开始最适合初学者和小型应用程序,bloc 也使用 provider 但具有更健壮的架构。
  • 好吧@Chance..我会检查一下。盖茨呢?有什么好处吗?
  • 我维护了一个有 GetX 的项目,它让我很困扰,因为它是架构,我把 Getx 看作一个盒子,里面有一切,甚至不需要的东西,它是一门杀死苍蝇的大炮。看看 Getx 的一些例子并得出自己的结论,这是最好的方法。
  • 试试提供者>> Riverpod>> Bloc
  • GetX 或腕尺。我个人喜欢 Getx,它让我可以完全控制项目。

标签: flutter dart setstate bloc state-management


【解决方案1】:

BLoC/肘

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

  1. 更少样板
  2. 不使用双向流

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

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


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

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

    有用的网址:

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

    这是我制作的 simple 1-feature app 作为概念证明,以展示 Cubit 的具体工作原理。阅读项目的 README.md 了解上下文。

    结论:

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

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

【讨论】:

    【解决方案2】:

    Cubits 非常容易理解,可以在大多数 Flutter 项目中使用。对于更大的应用程序,我会选择 Riverpod。拥有独立的提供者提供了很大的灵活性,因为它们可以在应用程序的不同部分使用,并且您可以将任何未来、用例或存储库作为提供者。

    我已经用 Flutter 应用程序写了一个tutorial,介绍如何使用 cubits、hooks 和本地数据库和 Hive 编写 List - Details 应用程序。

    【讨论】:

      【解决方案3】:

      GETX - 状态管理

      我建议使用 Getx,因为我一直在使用它3年这很棒。

      它非常容易学习。

      我从未遇到过需要使用任何其他状态管理的情况。

      GETX 提供的功能

      • 状态管理
      • 依赖注入
      • 主题
      • 简洁的结构
      • 国际化
      • 验证/实用程序

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 2021-04-28
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2021-11-19
        • 2021-05-23
        相关资源
        最近更新 更多