首页 > 解决方案 > 删除元素上的 Flutter ListView.builder 不更新列表

问题描述

我有一个 ListView.builder 小部件

void delete(dynamic obj) {
  setState((){
    pc.remove(obj);
  })
}

void update(dynamic obj){}

List pc = List();

@override
void init(){
  super.initState();
  //Fetch data
  setState((){
    pc = data;
  })
}

@override
Widget build(BuildContext context) {
  return Container(
    child: ListView.builder(
      padding: EdgeInsets.only(bottom: 72.0),
      itemCount: pc.length,
      itemBuilder: (context, index) {
        return ListItemWid(
          pc.elementAt(index), delete, update);
      },
    ),
  );
}

这里显示了动态作为元素类型,但实际上是一个固定对象。现在,当调用 ListItemWid 的删除按钮时,我调用有状态小部件中的删除函数,并执行函数中的代码,因为该对象已从数据库中删除。但它没有正确反映在视图中。有时,错误的元素被删除,有时根本没有元素被删除。有时它会起作用。由于限制,我无法发布实际的源代码,但我确实需要帮助在颤振中修改列表视图中的元素。颤振画廊中展示的标准方法不起作用。

只是为了获取更多信息,列表视图显示在 PageView 页面之一中,并且所有数据都从 Sqflite 获取并显示在当前列表小部件中。

请帮忙。

谢谢。

标签: listviewdartflutter

解决方案


您应该为返回的 ListView 构建器小部件添加一个密钥我建议您从 google devolopers 频道​​观看此视频:https ://www.youtube.com/watch?v=kn0EOS-ZiIc 它可以帮助您了解更多关于“钥匙”


推荐阅读