【发布时间】:2021-11-24 05:13:26
【问题描述】:
这是我的代码。
bool isAddedToCart = false;
return ListView.builder(
........
ElevatedButton (
child: isAddedToCart? Text('Added to cart') : Text('Add to cart'),
style: ElevatedButton.styleFrom(
primary: Constants.primaryColor,
onPrimary: Constants.appColor
),
onPressed: () async{
setState(() {
isAddedToCart = !isAddedToCart;
});
},
),
问题是,如果我点击那个提升的按钮,那么该按钮的文本只能在该索引上更改。但它在 listview.builder 中的所有索引中都在发生变化。
任何人都可以为此提供解决方案,即所选索引上的一个按钮必须使用更改的名称进行更新。
【问题讨论】:
-
确保使用有状态的小部件。而不是使用单个布尔变量,您应该有一个字符串列表并使用 ListView 构建器索引对其进行索引。
-
是的,我正在使用 stateFulWidget。
-
这显然是一个逻辑错误。您必须为列表的每个索引创建一个标志。并检查标志是真(添加到购物车)还是假(未添加到购物车)。在这种情况下,您所做的只是更新列表中所有按钮的标题。
标签: flutter