0

该数据disapear.but我想每当我点击删除按钮它立即删除不重新启动应用程序。我如何解决这个问题有人建议我吗?

这里初始化状态代码

 @override
  void initState() {
    super.initState();
    setState(() {
      getPostsData();
    });
    controller.addListener(() {
      double value = controller.offset / 119;

      setState(() {
        topContainer = value;
        closeTopContainer = controller.offset > 50;
      });
    });
    _currentScreen();
  }

这是我的删除方法代码

void _delete(BuildContext context, int id) async {
    int result = await dbHelper.deletedata(id);
    if (result != 0) {
      _showSnackBar(context, 'Data Deleted Successfully');
      updateListView();
    }
  }

这是我的更新列表代码

 void updateListView() {
    final Future<Database> dbFuture = dbHelper.initializeDatabase();
    dbFuture.then((database) {});
  }
4

3 回答 3

0

我认为将 setState 添加到 updateListView() 应该可以。

void updateListView() {
    final Future<Database> dbFuture = dbHelper.initializeDatabase();
    dbFuture.then((database) {});
    setState((){});
}

编辑:看起来您只在 initState 中获取一次数据库的数据。也许您每次删除某些内容时都需要重新执行获取数据的函数。

于 2020-08-31T12:25:09.897 回答
0

来电。getPostsData_updateListView

void updateListView() {
    final Future<Database> dbFuture = dbHelper.initializeDatabase();
    dbFuture.then((database) {});
    getPostsData();
}
于 2020-08-31T13:02:56.310 回答
0

不是基本方式,但您可以添加一个按钮以在删除后刷新列表并使用 getPostsData 调用 setState 来刷新项目。为了获得更好的解决方案,您可以在每次删除时使用提供程序并通知侦听器。

于 2020-09-01T06:11:18.350 回答