【问题标题】:Listview builder creating duplicate of list itemListview builder 创建列表项的副本
【发布时间】: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});
            },
          );
        },
      ),
    );

【问题讨论】:

  • 你解决了这个问题吗?

标签: flutter flutter-layout flutter-listview


【解决方案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-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2018-03-04
  • 2016-06-21
  • 1970-01-01
  • 2017-03-16
相关资源
最近更新 更多