【发布时间】:2021-04-05 15:10:36
【问题描述】:
我正在用颤振块构建一个购物车系统。我有一个产品列表,现在我正在向列表中添加新产品。它工作正常。但我想增加一个项目的计数,如果它存在于列表中。
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();
}
}
}
这是我正在使用的两种状态。首先是直接添加产品,而第二个是在更新列表内的项目后重新分配列表。我遇到的问题是我的计数状态没有更新。我用过平等的。包括所有依赖项。这种方法正确还是我应该采用另一种方法?我无法意识到如何做到这一点。我的页面只有在刷新后才会更新。
【问题讨论】:
标签: flutter dart shopping-cart bloc flutter-bloc