android - 如何在 Flutter 中自动刷新 listView?
问题描述
我实现了 listView 来显示数据,我将数据保存到Sqflite Database
,从数据库中获取并显示到 listview 中。保存数据后,我pop
将字段页面形成为 listView 页面,但我的 ListView 未更新,我需要返回并打开 listView 以查看新记录。
List<SubjectModel> list;
int count = 0;
SubjectModel subjectModel;
@override
Widget build(BuildContext context) {
if (list == null) {
list = List<SubjectModel>();
updateListView();
}
return Scaffold(
appBar: AppBar(
title: Text('Subject'),
),
floatingActionButton: FloatingActionButton(
backgroundColor: Colors.purple,
child: Icon(Icons.add),
onPressed: () {
Navigator.push(context,
new MaterialPageRoute<void>(builder: (context) {
return new CreateTask(SubjectModel('', '', '', '', '', '', ''),'Add Subject');
}));
}),
body: getSubListView()
);
}
ListView getSubListView(){
return ListView.builder(
itemCount: count,
itemBuilder: (BuildContext context, int position){
return Card(
color: Colors.white,
elevation: 2.0,
child: Column(
children: <Widget>[
ListTile(
title: Text(this.list[position].subject),
onLongPress: () => navigateToDetail(this.list[position],'Edit Subject'),
)
],
),
);
}
);
}
}
解决方案
每当您想重建任何东西(本例中的 listView )时,都必须调用一个 setState() 。
我要补充:
@override
void didChangeDependencies() {
super.didChangeDependencies();
setState(() {
updateListView();
});
}
推荐阅读
- php - 如何在codeigniter中将当前日期时间插入oracle数据库
- javascript - 将 D3 JS 版本 5 坐标缩放到像素
- kubernetes - 如何根据 Kubernetes 中的节点对 Pod 进行排序
- php - Laravel 5.6 mac osx make:migration 命令不做任何事情
- mongodb - 分析 Mongo oplog 的“最大”查询
- excel - Excel VBA 按钮 - 更改参考单元格的快速方法
- charts - ChartJs - 设置刻度之间空间的背景颜色
- javascript - 如何多次调用 sendToDevice 作为函数结果?
- sql - 在不同列中具有子项的递归查询
- reactjs - React 路由导致莫名其妙的行为