Я пытаюсь создать корзину для покупок, используя шаблон блока, так как это мое первое приложение в трепетании, а также с использованием блока.Моя проблема в том, что я пытаюсь получить поток int каждый раз, когда пользователь добавляет продукт в корзину.но кажется, что я использую приемник и поток неправильно, но я не знаю точно, где
ItemCounterBloc
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}')
Также у меня есть еще один блок для добавления товаров в корзину.