【发布时间】:2020-12-30 01:30:14
【问题描述】:
问题在于,当点击列表图块时,所有列表图块的数量都会增加。
我有一个具有这种构建方法的无状态小部件:
final ProductsList productsList = ProductsList(context);
return Scaffold(
body: Center(child: productWidget(productsList, args)));
}
这是 ProductWidget
FutureBuilder productWidget(productsList) {
return FutureBuilder(
future: getProducts,
builder: (context, products) {
switch (products.connectionState) {
case ConnectionState.waiting:
return Text('Loading....');
default:
return Scaffold(
body: productsList.build(products.data));
}
},
);
这就是 productsList.build 所做的:
ProductsList(this.context);
Padding getProduct(name) {
int _quantity = Provider.of<Quantity>(context).getQuantity();
return ListTile(
key: UniqueKey(),
onTap: () {
Provider.of<Quantity>(context, listen: false).incrementQuantity();
},
title: Text(name),
trailing: Text("$_quantity"),
),
);
}
ListView build(products) {
List<Widget> _products = new List();
for (var i = 0; i < products.length; i++) {
_products.add(getProduct(products[i].name));
}
return ListView(
children: _products,
);
}
我正在使用这个 changeNotifier :
class Quantity extends ChangeNotifier {
int _quantity = 0;
void incrementQuantity(){
_quantity += 1;
notifyListeners();
}
int getQuantity() {
return _quantity;
}
}
我想点击一个列表图块并增加它的值,它显示在尾部,而不是其他值。
我在应用程序的主文件中使用了多提供者。
【问题讨论】:
标签: flutter listview flutter-provider