我的工作与颤振相当长的时间,并有一堆发布的产品。我从未真正喜欢过BLoC,我更喜欢使用提供者或更高版本的Riverpod。
我只是不明白那个事件的概念。为什么我们还需要它?我很困惑因为它真的很受欢迎。BLoC的Cubit子类似乎使用起来更简单,但每个人都不停地说:"Cubit更简单,但功能不太好。“但限制是什么呢?
我甚至认为古巴人同时更有用、更简单:
用户点击一些产品的“添加到购物车”按钮。
古巴:
cartCubit.addProduct(productId);BLoC:
cartBloc.addEvent(UserAddsProductEvent(productId));在它们里面:
古巴:
void addProduct(String productId) async {
//some validation...
if(...){...}
final result = await cartRepo.addProduct(id);
if(result == ...) {
state = someState;
//....
}BloC:
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;
//....
}有什么意义?
发布于 2022-01-12 13:21:39
BLoC
拥有事件而不是直接方法调用的优点是,在执行逻辑之前,您可以退出/节流,缓冲流。
换句话说,您可以使用适用于事件逻辑的特殊方法。
库比特
如果您从一个新项目的Cubit开始,那么它存在的想法是,以后您将有能力从Cubit迁移到BLoC。
这意味着,如果在项目开始时,您认为BLoC开销太大,需要更简单的状态管理(没有事件、样板等等)。与选择不同的状态管理解决方案(如BLoC或Riverpod )相比,您可以选择cubit并迁移到BLoC。
因此,对于Cubit,您首先要实现状态和功能。稍后,如果您决定切换到BLoC,则添加事件和EventHandler。
更多您可以在这里阅读(官方文档):Cubit对BLoC
发布于 2021-06-01 22:37:30
有一个很好的概述,小熊队对集团在正式文件。
简而言之,Cubit的优点是简单性,而Bloc提供了更好的可追溯性和高级ReactiveX操作。
在我们的项目中,我们在更简单的情况下使用Cubit,如果逻辑更复杂,则使用Bloc,并且一些“限制”实际上变得有用:
而且,这可能是个人偏好的问题,但我喜欢Bloc与FSM模式的密切映射。在大多数情况下,应用程序状态可以很好地表示为状态机。即使使用白板也可以更容易地讨论实现,因为您可以只显示包含多个状态和事件更改该状态的方案。
如果你对小熊很满意,那么你可能不需要布洛克。毕竟,主要目标是使体系结构易于理解和维护。
https://stackoverflow.com/questions/67796321
复制相似问题