【问题标题】:Show the number of quantity items in the cart Badge显示购物车中的商品数量
【发布时间】:2024-04-27 16:15:01
【问题描述】:

当我将相同的商品添加到购物车时,购物车徽章上的数量不会增加。即使添加相同的产品,如何增加数量。只有当我添加不同的产品时它才会改变。

购物车供应商

import 'package:flutter/foundation.dart';

class CartItem {
  final String id;
  final String title;
  final int quantity;
  final double price;

  CartItem({
    required this.id,
    required this.title,
    required this.quantity,
    required this.price,
  });
}

class Cart with ChangeNotifier {
  Map<String, CartItem> _items = {};

  Map<String, CartItem> get items {
    return {..._items};
  }

  int get itemCount {
    return _items.length;
  }


徽章

Consumer<Cart>(
                      builder: (_, cart, ch) => Badge(
                        child: ch!,
                        value: cart.itemCount.toString(),
                        color: Colors.red,
                      ),

【问题讨论】:

  • 你能显示你“添加”到购物车的代码吗?

标签: flutter dart flutter-provider state-management


【解决方案1】:

您可以将此 getter 添加到您的 Cart 类中。

int get totalItems {
  return items.values.fold<int>(0, (currentValue, cartItem) {
    return currentValue += cartItem.quantity;
  });
}

或者您可以在Cart 类中添加一个字段为itemCount。在这种情况下,您必须在每次向cart 添加内容时更新itemCount 属性的值。

另外,请查看我的github repo 寻求帮助。

【讨论】: