我正在尝试使用 bloc 模式构建一个购物车,因为这是我在 Flutter 中的第一个应用程序以及使用 bloc。我的问题是,每次用户将产品添加到购物车时,我都试图获取 int 流。但似乎我使用的接收器和流错误,但我不知道确切的位置
项目计数器块
final _itemCounterSubject = BehaviorSubject<int>(seedValue: 0);
final _cartItemsController = StreamController<List<CartItem>>();
int count = 0;
ItemCounterBloc(Item item){
_cartItemsController.stream
.map((list) => list.any((cartItem)=> cartItem.item == item))
.listen((increment){
count += 1;
_itemCounterSubject.add(count);
});
}
Sink<List<CartItem>> get cartItems => _cartItemsController.sink;
ValueObservable<int> get isInCart => _itemCounterSubject.stream.distinct().shareValue(seedValue: 0);
void dispose(){
_cartItemsController.close();
_itemCounterSubject.close();
}
}
柜台
StreamBuilder<int>(
stream: _bloc.isInCart,
initialData:0,
builder: (context, snapshot) => Text('${snapshot.data}')
此外,我还有另一个用于将商品添加到购物车的集团。