listview - 删除元素上的 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 获取并显示在当前列表小部件中。
请帮忙。
谢谢。
解决方案
您应该为返回的 ListView 构建器小部件添加一个密钥我建议您从 google devolopers 频道观看此视频:https ://www.youtube.com/watch?v=kn0EOS-ZiIc 它可以帮助您了解更多关于“钥匙”
推荐阅读
- reactjs - 从外部组件切换全屏时取消静音反应播放器
- python - 通过关键字查找行并在python中获取该行的值
- python - 如何删除 discord.py 中的消息信息?
- java - 将文件下载到“下载”文件夹的自定义单元格按钮操作
- android - Flutter build gradle 在尝试发布 android 应用 apk 时失败
- python - 在 Pytorch 中训练 CNN 时突然重新初始化训练和验证损失以及缓慢的覆盖
- swiftui - SwiftUI:删除 TextField() 但不删除 Text() 时索引超出范围
- javascript - Angular - 加载时出现图像
- python - ValueError: 层 lstm_17 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,128]
- amazon-web-services - AWS CodeCommit 在成功构建之前阻止合并