Skip to content

Question regarding bloc_complex and the ProductSquareBloc #9

@enyo

Description

@enyo

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions