在SQFlite中进行数据库操作后刷新数据

时间:2019-11-02 09:17:52

标签: flutter dart sqflite

我有一个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);
              },
            ),
          ),
        );
      },
    );
  }
}

0 个答案:

没有答案