gpt4 book ai didi

flutter - 每个项目的计数器

转载 作者:行者123 更新时间:2023-12-03 02:48:03 27 4
gpt4 key购买 nike

我正在尝试使用 provider 包制作一个购物车页面,我想要每个项目的数量,所以每次我添加一个新产品时,我都希望它检查它是否存在于列表中,如果它存在我希望它计算它被添加了多少次,但如果它还没有在购物车中,它就会被添加到购物车中

这是我的购物车

import 'package:flutter/material.dart';

import 'item.dart';

class Cart extends ChangeNotifier{
List<Item> items = [];
double totalPrice = 0.0;
int singleProductCount = 0;

void add(Item item) {
items.add(item);
totalPrice += item.price;
notifyListeners();
}

void remove(Item item) {
items.remove(item);
totalPrice -= item.price;
notifyListeners();
}

int get count {
return items.length;
}

double get totalprice {
return totalPrice;
}

int get singleproductCount {
return singleProductCount;
}

List<Item> get basketItems {
return items;
}
}

这是将它添加到购物车的 IconButton

IconButton(icon: Icon(Icons.add), onPressed: () {
cart.add(Item(name: snapshot.data.documents[index]["name"], price: snapshot.data.documents[index]["price"], imageUrl: snapshot.data.documents[index]["imageUrl"]));
}),

最佳答案

我想出了一个办法,但希望有人能有更好的解决方案。但我所做的实际上是创建另一个列表来帮助我们解决这个问题。该列表将包含名称(或您希望包含的任何内容)。然后我检查该名称是否在列表中,如果在,则返回 null,否则将 Item 添加到列表中。在添加类实例的情况下,这是我目前唯一能想到的方法。

List<String> _names = [];
double totalPrice = 0.0;


List<String> get names {
return _names;
}



void add(Item item, String newNames) {
itemList.add(item);
_names.add(newNames); // add new names to names list
totalPrice += item.price;
notifyListeners();
}
  // If the names list contains any name from the docs already, then don't add anything
// else add the name to the list along with the Item
cart.names.contains(snapshot.data.documents[index]["name"])
? null
: cart.add(
Item(
name: snapshot.data.documents[index]["name"],
price: snapshot.data.documents[index]["price"],
imageUrl: snapshot.data.documents[index]["imageUrl"]
),

snapshot.data.documents[index]["name"]
);

顺便说一句,如果您不打算通过使用下划线来使您的属性私有(private),那么使用get 并没有真正意义,例如,int _singleProductCount = 0 ;

关于flutter - 每个项目的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63235822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com