【发布时间】:2021-01-07 21:00:59
【问题描述】:
我最近开始使用 bloc 并卡在这里。
我有一个状态:
class BasketState extends Equatable{
final Map<Item, int> itemsOrdered;
BasketState(this.itemsOrdered);
@override
List<Object> get props => [itemsOrdered]
}
还有以下集团:
class BasketBloc extends Bloc<BasketEvent, BasketState> {
Map<Item, int> _itemsOrdered = {};
BasketBloc() : super(BasketState({}));
@override
Stream<BasketState> mapEventToState(BasketEvent event) async* {
if (event is BasketAdd) {
_itemsOrdered.putIfAbsent(event.item, () => event.amount);
} else if (event is BasketRemove) {
_itemsOrdered.remove(event.item);
}
yield BasketState(_itemsOrdered);
}
}
只有在我第一次发送 BasketAdd 事件时,块才会发出状态,然后如果我再次发送 BasketAdd 事件,块不会发出任何东西。
唯一有效的方法是从状态中删除 Equatable,我不知道为什么。
我做错了吗?
【问题讨论】:
标签: flutter events stream state bloc