删除元素上的Flutter ListView.builder不更新列表

时间:2019-03-18 06:18:24

标签: listview dart flutter

我有一个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的删除按钮时,我在有状态窗口小部件中调用了删除函数,并且执行了该函数中的代码,因为该对象已从数据库中删除。但这并没有在视图中正确反映。有时会删除错误的元素,有时甚至根本不会删除任何元素。有时可以。由于限制,我无法发布实际的源代码,但我确实需要帮助来帮助在Flutter中修改列表视图中的元素。在flutter画廊中演示的标准方法不起作用。

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

请帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该将一个密钥添加到ListView构建器的返回小部件中 我建议您从Google devolopers频道观看此视频:https://www.youtube.com/watch?v=kn0EOS-ZiIc 它很好地帮助您了解有关“键”的更多信息