首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cubit和Bloc有什么不同?

Cubit和Bloc有什么不同?
EN

Stack Overflow用户
提问于 2020-07-28 17:29:24
回答 2查看 11.6K关注 0票数 27

我对Bloc: 6.0.0的新版本有点困惑,增加了Cubit的概念,是bloc贬值了还是我们可以同时使用它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 17:29:24

Cubit是BLoC模式包的一个子集,它不依赖于事件,而是使用方法发出新状态。

因此,对于简单的状态,我们可以使用Cubit,如果需要,我们可以使用Bloc。

票数 33
EN

Stack Overflow用户

发布于 2021-06-10 18:48:10

Cubit适用于简单的状态管理,您只需将一种类型的事件绑定到状态。而Bloc用于复杂的状态管理,您可以将许多事件映射到状态。

例如,让我们考虑下面的Cubit

代码语言:javascript
复制
class SimpleCubit extends Cubit<SimpleState> {
  SimpleCubit () : super(InitialState());
  
  void getState(String stateName){
    emit(NewState(stateName));
  }  

}

上面的状态管理只有一个事件,您可以将其命名为getStateByName,因此Cubit就足够了。

现在让我们来看看bloc

代码语言:javascript
复制
class SimpleBloc extends Bloc<SimpleEvent, SimpleState> {
  SimpleBloc() : super(InitialState());

  @override
  Stream<SimpleState> mapEventToState(SimpleEvent event) async* {
    switch(event){
       case SimpleEven1:
         yield SimpleState1(event.args)
         break;
       case SimpleEven2:
         yield SimpleState2(event.args)
         break;
    }
  }
}

您可以看到,对于使用块进行复杂状态管理,可以很容易地将事件绑定到状态,仍然使用事件将数据作为args发送到状态。块提供了更多灵活性。

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

https://stackoverflow.com/questions/63131067

复制
相关文章

相似问题

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