3

我有一个使用列表视图构建器构建的小部件列表。问题是当我更改列表中某个项目的状态(使用列表项的 ontap 属性)时,状态会发生变化,但是该变异列表项的精确副本会添加到列表的最顶部

片段

List data = [1,2,2,1,1];

return Scrollbar(
      child: ListView.builder(

        itemCount: data.length,
        itemBuilder: (context, int index) {
          final s = data[index];

          return ListTile(

            dense: false,
            leading: leading(leading),
            title: Text(s),
            subtitle: Text(
              "${s}",
              style: Theme.of(context).textTheme.caption,
            ),
            onTap: () {
              setState(() {//do something to the subtitle});
            },
          );
        },
      ),
    );
4

1 回答 1

1

尝试给每ListTile一个独一无二的Key

例如:

     return ListTile(
        key: Key("${index}"),
        dense: false,
        leading: leading(leading),
        title: Text(s),
        subtitle: Text(
          "${s}",
          style: Theme.of(context).textTheme.caption,
        ),
        onTap: () {
          setState(() {//do something to the subtitle});
        },
      );
于 2019-09-08T09:21:14.513 回答