【问题标题】:it couldn't update the list它无法更新列表
【发布时间】:2020-12-19 13:26:52
【问题描述】:

该数据消失。但我希望每当我点击删除按钮时它立即删除而不是重新启动应用程序。我如何解决这个问题有人建议我吗?

这里是初始化状态码

 @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) {});
  }

【问题讨论】:

    标签: flutter flutter-layout flutter-listview flutter-layoutbuilder


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      updateListView 中致电getPostsData

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2021-07-16
          • 1970-01-01
          • 1970-01-01
          • 2013-10-22
          • 1970-01-01
          • 2022-06-30
          • 2015-06-13
          • 2019-07-04
          相关资源
          最近更新 更多