我对Bloc: 6.0.0的新版本有点困惑,增加了Cubit的概念,是bloc贬值了还是我们可以同时使用它们?
发布于 2020-07-28 17:29:24
Cubit是BLoC模式包的一个子集,它不依赖于事件,而是使用方法发出新状态。
因此,对于简单的状态,我们可以使用Cubit,如果需要,我们可以使用Bloc。
发布于 2021-06-10 18:48:10
Cubit适用于简单的状态管理,您只需将一种类型的事件绑定到状态。而Bloc用于复杂的状态管理,您可以将许多事件映射到状态。
例如,让我们考虑下面的Cubit
class SimpleCubit extends Cubit<SimpleState> {
SimpleCubit () : super(InitialState());
void getState(String stateName){
emit(NewState(stateName));
}
}上面的状态管理只有一个事件,您可以将其命名为getStateByName,因此Cubit就足够了。
现在让我们来看看bloc
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发送到状态。块提供了更多灵活性。
https://stackoverflow.com/questions/63131067
复制相似问题