删除元素时颤振ListView.builder未更新列表

删除元素时颤振ListView.builder未更新列表,listview,dart,flutter,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 Wi

我有一个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的delete按钮时,我调用有状态小部件中的delete函数,并执行函数中的代码,因为对象已从db中删除。但这并没有正确地反映在视图中。有时删除错误的元素,有时根本不删除任何元素。有时它是有效的。由于受到限制,我无法发布实际的源代码,但我确实需要帮助修改颤振列表视图中的元素。颤振走廊中演示的标准方法不起作用

更多信息,列表视图显示在其中一个PageView页面中,所有数据仅从当前列表小部件中的Sqflite获取和显示

请帮忙


谢谢。

您应该向ListView生成器返回的小部件添加一个键 我建议您从google DevLopers频道观看以下视频:
它很好地帮助您了解有关“键”的更多信息。

您应该向ListView生成器的返回小部件添加一个键 我建议您从google DevLopers频道观看以下视频:
它很好地帮助您了解有关“键”的更多信息

Try而不是
pc.remove(obj)
pc=pc.remove(obj.toList()
“有时删除错误的元素,有时根本不删除任何元素。有时有效。”表示应将
ValueKey
s传递给
ListItemWid
元素,如果
数据
项作为键值传递,则应在其中传递唯一属性。请尝试而不是
pc.remove(obj)
pc=pc.remove(obj.toList()“有时删除错误的元素,有时根本不删除任何元素。有时有效。”表示应将
ValueKey
s传递给
ListItemWid
元素,如果
数据
项作为键值传递,则在该元素中传递唯一属性。