Listview builder 创建列表项的副本
Posted
技术标签:
【中文标题】Listview builder 创建列表项的副本【英文标题】:Listview builder creating duplicate of list item 【发布时间】:2020-01-10 10:15:30 【问题描述】:我有一个使用列表视图构建器构建的小部件列表。问题是当我更改列表中某个项目的状态(使用列表项的 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);
,
);
,
),
);
【问题讨论】:
你解决了这个问题吗? 【参考方案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);
,
);
【讨论】:
你能告诉我你的数据变量声明在哪里吗?以上是关于Listview builder 创建列表项的副本的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Using ListView.Builder:如何在我选择的所有项目上仅更改一项的背景颜色