如何使用提供商删除购物车项目
How to Remove cart item using provider
我正在使用供应商 class,我可以在其中使用产品 ID 将商品添加到购物车列表,但是当我使用类似的功能从购物车中删除商品时,该功能似乎找不到商品 id.or 我做错了。
我用来在提供者中添加项目的函数class:
//---------------------------------------add item
void addItem({
required CartItem product,
}) {
if (items.containsKey(product.id)) {
final double value = product.price;
items.update(
product.id,
(cartitem) => cartitem.copy(
qnt: cartitem.qnt + 1,
price: cartitem.price + value,
),
);
} else {
items.putIfAbsent(
product.id,
() => product.copy(
id: DateTime.now().toString(),
qnt: 1,
));
}
//---------------------------------------------------------total price
_totalPrice = _totalPrice + product.price;
notifyListeners();
}
以及我购物车中的清单:
//----------- items cart list
Widget buildCarditems(BuildContext context) {
final porvidr = Provider.of<ShopProvider>(context, listen: false);
if (porvidr.items.isEmpty) {
return Center(
child: Text(
'Cart is Empty',
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
);
} else {
return ListView(
children: porvidr.items.values.map(buildcarditem).toList(),
);
}
}
//------------cart listtile
Widget buildcarditem(CartItem c_item) {
return ListTile(
leading: CircleAvatar(backgroundImage: AssetImage(c_item.imgUrl)),
title: Row(
children: [
Text(
'${c_item.qnt}x',
style: TextStyle(color: Colors.white),
),
SizedBox(
width: 10,
),
Expanded(
child: Text(
c_item.title,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
],
),
trailing: Text(
'$${c_item.price}',
style: TextStyle(
color: Colors.white,
),
));
}
在哪里可以使用 ontap 函数获取产品 ID?
您可以将它添加到每个列表项的任何位置,您可以将列表块包裹在 n 手势检测器小部件中。这取决于要求。
我正在使用供应商 class,我可以在其中使用产品 ID 将商品添加到购物车列表,但是当我使用类似的功能从购物车中删除商品时,该功能似乎找不到商品 id.or 我做错了。
我用来在提供者中添加项目的函数class:
//---------------------------------------add item
void addItem({
required CartItem product,
}) {
if (items.containsKey(product.id)) {
final double value = product.price;
items.update(
product.id,
(cartitem) => cartitem.copy(
qnt: cartitem.qnt + 1,
price: cartitem.price + value,
),
);
} else {
items.putIfAbsent(
product.id,
() => product.copy(
id: DateTime.now().toString(),
qnt: 1,
));
}
//---------------------------------------------------------total price
_totalPrice = _totalPrice + product.price;
notifyListeners();
}
以及我购物车中的清单:
//----------- items cart list
Widget buildCarditems(BuildContext context) {
final porvidr = Provider.of<ShopProvider>(context, listen: false);
if (porvidr.items.isEmpty) {
return Center(
child: Text(
'Cart is Empty',
style: TextStyle(
color: Colors.white,
fontSize: 20,
),
),
);
} else {
return ListView(
children: porvidr.items.values.map(buildcarditem).toList(),
);
}
}
//------------cart listtile
Widget buildcarditem(CartItem c_item) {
return ListTile(
leading: CircleAvatar(backgroundImage: AssetImage(c_item.imgUrl)),
title: Row(
children: [
Text(
'${c_item.qnt}x',
style: TextStyle(color: Colors.white),
),
SizedBox(
width: 10,
),
Expanded(
child: Text(
c_item.title,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
],
),
trailing: Text(
'$${c_item.price}',
style: TextStyle(
color: Colors.white,
),
));
}
在哪里可以使用 ontap 函数获取产品 ID?
您可以将它添加到每个列表项的任何位置,您可以将列表块包裹在 n 手势检测器小部件中。这取决于要求。