我有一个ListView,它从SQFlite数据库读取数据后生成ListTiles。每个磁贴都有一个IconButton,允许用户删除该行。删除操作正常,但是ListView不会刷新,并且项目仍然可见。删除操作后如何让应用程序刷新数据?
class TaskListState extends State<TaskList> {
DBProvider dbProvider = new DBProvider();
Future<List<Task>> tasks;
@override
void initState() {
tasks = dbProvider.getAllTasks();
super.initState();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: tasks,
builder: (context, snapshot){
if(snapshot.hasError){
return Text("Data has error.");
} else if (!snapshot.hasData){
return Text("Wait please...");
} else {
return taskList(snapshot.data);
}
},
);
}
Widget taskList(List<Task> tasks){
return ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index){
String _subtitle = tasks[index].date + " " + tasks[index].start + "-" + tasks[index].end;
return Card(
elevation: 2.0,
child: ListTile(
leading: Icon(Icons.face),
title: Text(tasks[index].name),
subtitle: Text(_subtitle),
onTap: (){print("Tapped");},
trailing: IconButton(
icon: Icon(Icons.close),
onPressed: (){
dbProvider.delete(tasks[index].id);
},
),
),
);
},
);
}
}