颤振块中的推车系统

时间:2021-04-05 15:10:36

标签: flutter dart shopping-cart bloc flutter-bloc

我正在构建一个带有 flutter bloc 的购物车系统。我有一个产品列表,现在我正在向列表中添加新产品。它工作正常。但我想增加一个项目的计数,如果它存在于列表中。

  Stream<CartState> _mapCartItemAddedToState(
    CartItemAdded event,
    CartState state,
  ) async* {
    if (state is CartLoaded) {
      try {
        yield CartLoaded(
          cart: Cart(items: List.from(state.cart.items)..add(event.item)),
        );
      } on Exception {
        yield CartError();
      }
    }
  }

  Stream<CartState> _mapCartItemIncrementedToState(
      CartItemIncremented event, CartState state) async* {
    if (state is CartLoaded) {
      List<Item> items = List.from(state.cart.items);
      var index = items.indexWhere((item) => item.id == event.id);
      items[index].count++;

      try {
        yield CartLoaded(cart: Cart(items: items));
      } on Exception {
        yield CartError();
      }
    }
  }

这是我正在使用的两种状态。首先是直接添加产品,而第二个是在更新列表内的项目后重新分配列表。我的问题是我的计数状态没有更新。我用过等号。包括所有依赖项。这种方法是正确的还是我应该采用另一种方法?我无法意识到如何做到这一点。我的页面只有在我刷新后才会更新。

1 个答案:

答案 0 :(得分:0)

前段时间,我构建了使用 BLoC 进行状态管理的 Shopping App Prototype。这个项目解决了完全相同的问题。您可以在此处找到 Cart BLoC(连同项目存储库)的示例:https://github.com/mkobuolys/shopping-app-prototype/blob/main/lib/modules/cart/bloc/cart_bloc.dart