首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤栗BLoC:古巴人比BLoC好吗?

颤栗BLoC:古巴人比BLoC好吗?
EN

Stack Overflow用户
提问于 2021-06-01 21:39:35
回答 2查看 2.1K关注 0票数 4

我的工作与颤振相当长的时间,并有一堆发布的产品。我从未真正喜欢过BLoC,我更喜欢使用提供者或更高版本的Riverpod。

我只是不明白那个事件的概念。为什么我们还需要它?我很困惑因为它真的很受欢迎。BLoC的Cubit子类似乎使用起来更简单,但每个人都不停地说:"Cubit更简单,但功能不太好。“但限制是什么呢?

我甚至认为古巴人同时更有用、更简单:

  1. 用立体声,你只叫它的方法与帕拉姆。您仍然可以侦听它的状态,并在需要时获得方法返回值。
  2. 您不需要额外的代码来实现这些事件类型。
  3. 您不需要额外的代码来实现single将如何处理每一个事件类型。方法做得很好。

用户点击一些产品的“添加到购物车”按钮。

古巴:

代码语言:javascript
复制
cartCubit.addProduct(productId);

BLoC:

代码语言:javascript
复制
cartBloc.addEvent(UserAddsProductEvent(productId));

在它们里面:

古巴:

代码语言:javascript
复制
void addProduct(String productId) async {
   //some validation...
   if(...){...}
   final result = await cartRepo.addProduct(id);
   if(result == ...) {
      state = someState;
   //....
}

BloC:

代码语言:javascript
复制
void addEvent(CartEvent event) {
   if (event is UserAddsProductEvent) {
      _addProduct(event.productId)
      } else if (event is....) {
      //.....
      }
}

void _addProduct(String productId) async {
   //some validation...
   if(...){...}
   final result = await cartRepo.addProduct(id);
   if(result == ...) {
      state = someState;
   //....
}

有什么意义?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-12 13:21:39

BLoC

拥有事件而不是直接方法调用的优点是,在执行逻辑之前,您可以退出/节流,缓冲流。

换句话说,您可以使用适用于事件逻辑的特殊方法。

库比特

如果您从一个新项目的Cubit开始,那么它存在的想法是,以后您将有能力从Cubit迁移到BLoC。

这意味着,如果在项目开始时,您认为BLoC开销太大,需要更简单的状态管理(没有事件、样板等等)。与选择不同的状态管理解决方案(如BLoC或Riverpod )相比,您可以选择cubit并迁移到BLoC。

因此,对于Cubit,您首先要实现状态和功能。稍后,如果您决定切换到BLoC,则添加事件和EventHandler。

更多您可以在这里阅读(官方文档):Cubit对BLoC

票数 1
EN

Stack Overflow用户

发布于 2021-06-01 22:37:30

有一个很好的概述,小熊队对集团在正式文件

简而言之,Cubit的优点是简单性,而Bloc提供了更好的可追溯性高级ReactiveX操作

在我们的项目中,我们在更简单的情况下使用Cubit,如果逻辑更复杂,则使用Bloc,并且一些“限制”实际上变得有用:

  • 您只能作为对事件的反应而发出新的状态,因此实现更简单(但也更详细)。
  • 所有事件都是一个接一个地处理的。同样,它使实现更加可靠和易于维护。

而且,这可能是个人偏好的问题,但我喜欢Bloc与FSM模式的密切映射。在大多数情况下,应用程序状态可以很好地表示为状态机。即使使用白板也可以更容易地讨论实现,因为您可以只显示包含多个状态和事件更改该状态的方案。

如果你对小熊很满意,那么你可能不需要布洛克。毕竟,主要目标是使体系结构易于理解和维护。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67796321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档