更新listView.builder中的动画容器

问题描述 投票:0回答:1

如何使用位于列表视图生成器下的longPress更新动画容器

widget.meetingdetails.forEach((tasks) {
  if (tasks['task'] == 'Meeting') {
    _meetinglist.add(GestureDetector(
      onLongPress: () {
        setState(() {
          heightChange = heightChange == 130 ? 150 : 130;

        });
      },
      child: AnimatedContainer(
        duration: new Duration(milliseconds: 500),
        height: heightChange,
        padding: EdgeInsets.symmetric(horizontal: 30, vertical: 10),)).......

上面的代码是我创建列表的方式,下面的代码是我在listView.builder上实现它的方式

return ListView.builder(
  itemCount: _meetinglist.length,
  itemBuilder: (BuildContext context, int index) => _meetinglist[index],
  padding: EdgeInsets.only(bottom: 60), physics: BouncingScrollPhysics(),

);

这里,当我长按容器上的列表中的所有项目更新。我只需要按下容器即可更新

The container before longpressContainer after longpress

android flutter dart flutter-layout
1个回答
1
投票

我认为您的height变量是此状态的一部分,该状态已在_meetingList变量中的所有小部件之间共享。这就是为什么它们全部都被更新的原因。尝试将GestureDetector小部件提取到其自己的有状态小部件中,并分别在各个小部件中处理高度。

© www.soinside.com 2019 - 2024. All rights reserved.