-
Notifications
You must be signed in to change notification settings - Fork 133
Open
Description
The ProductSquareBloc has its own StreamController for the cartItems. In its constructor it sets up a listener to that stream, to be able to update the isInCard stream:
ProductSquareBloc(Product product) {
_cartItemsController.stream
.map((list) => list.any((item) => item.product == product))
.listen((isInCart) => _isInCartSubject.add(isInCart));
}then the ProductSquare feeds that _cartItemsController in the _createBloc method:
_bloc = ProductSquareBloc(widget.product);
_subscription = widget.itemsStream.listen(_bloc.cartItems.add);My question is this:
Why doesn't the ProductSquareBloc simply get the widget.itemsStream directly?
It could be like this:
/// Creating the bloc
_bloc = ProductSquareBloc(widget.product, onItems: widget.itemsStream);and inside the bloc's constructor:
ProductSquareBloc(Product product, {Stream onItems}) {
onItems
.map((list) => list.any((item) => item.product == product))
.listen((isInCart) => _isInCartSubject.add(isInCart));
}What is the advantage of managing it's own controller and stream like this?
Metadata
Metadata
Assignees
Labels
No labels