【发布时间】:2021-10-07 06:58:15
【问题描述】:
我正在其中构建一个listview.builder,它返回5(动态非静态)card 小部件,其中包含两个buttons 和计数text 小部件。问题是每当我点击第一个card 小部件上的- 或+ 按钮时,它都会更新所有cards。如何防止这个问题,我只想在第一个 card 小部件上更新 count 文本。我知道它在listview.builder 里面,但有什么解决方案可以解决这个问题。
class MenuCartWidget extends StatefulWidget {
const MenuCartWidget({Key? key}) : super(key: key);
@override
_MenuCartWidgetState createState() => _MenuCartWidgetState();
}
class _MenuCartWidgetState extends State<MenuCartWidget> {
int count = 1;
@override
Widget build(BuildContext context) {
var height = MediaQuery.of(context).size.height;
var width = MediaQuery.of(context).size.width;
return Scaffold(
body: Container(
child: Padding(
padding: const EdgeInsets.only(top: 20.0, left: 10.0, right: 10.0),
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: 5, //dynamic eg: num.length;
itemBuilder: (BuildContext context, int index) {
return Card(
child: Column(
children: [
Text('test'),
Row(
children: [
TextButton(
onPressed: () {
setState(() {
count--;
});
},
child: Text('-')),
Text(count.toString()),
TextButton(
onPressed: () {
setState(() {
count++;
});
},
child: Text('+')),
],
)
],
),
);
}),
),
),
);
}
}
【问题讨论】: