我正在嘗試構建一個購物應用程式。當按下此按鈕時,這將增加和減少計數。

這是代碼(我正在使用提供程式包)
ListView.separated(
physics: const BouncingScrollPhysics(),
shrinkWrap: true,
itemCount: categoryList[index].dishCategory.length,
itemBuilder: (context, i) {
final data = categoryList[index].dishCategory[i];
return DishDetailsWidget(
data: data,
onAdd: () {
provider.increment();
},
onRemove: () {
provider.decrement();
},
);
},
separatorBuilder: (context, index) =>
const Divider(height: 5),
)
這是提供者代碼
class CartProvider extends ChangeNotifier {
int counter = 0;
increment() {
counter ;
notifyListeners();
}
decrement() {
if (counter == 0) {
counter;
} else {
counter--;
}
notifyListeners();
}
}
但它正在添加整個按鈕資料(因為它應該是每個代碼)。

如何只增加我按下的按鈕?
uj5u.com熱心網友回復:
問題是您在提供程式中只存盤了一個計數器值。
您需要您的提供商單獨存盤每個專案的計數器。
在地圖中,例如,像這樣:
class CartProvider extends ChangeNotifier {
Map<int, int> counter = {};
increment(int id) {
counter[id] = counter[id] == null ? 1 : counter[id] 1;
notifyListeners();
}
decrement(int id) {
if (counter[id] > 0) {
counter[id] -= 1;
}
notifyListeners();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529300.html
標籤:扑镖颤振提供者
上一篇:單擊串列時更改按鈕文本?
