【问题标题】:Flutter - Async method in Navigator callback refresh screenFlutter - Navigator 回调刷新屏幕中的异步方法
【发布时间】:2019-01-15 16:02:57
【问题描述】:

我有一个像这样的 Navigator.push:

Navigator.pushNamed(context, "NovoCNPJ").then((value) {
                    setState(() {
                      setupList();
                    });
                  });

我需要用这个 setState 更新我的 list 变量,我的 setupList 方法:

setupList() async {
    var banco = await db.initDB();
    list = await banco.rawQuery('SELECT * FROM Empresa');
    return list;
  }

这个方法是异步的,所以我认为它没有在这个代码上运行。当我从最后一个屏幕返回时,应该激活 setupList 并使用新项目重新加载我的列表,但不会调用该方法。

【问题讨论】:

    标签: async-await dart flutter future


    【解决方案1】:

    如果async是问题所在,你可以试试这个吗?

    Navigator.pushNamed(context, "NovoCNPJ").then((value) async {
      var banco = await db.initDB();
      var tempList = await banco.rawQuery('SELECT * FROM Empresa');
      setState(() {
        list = tempList
      });
    });
    

    编辑:

    Navigator.pushNamed(context, "NovoCNPJ").then((value) async {
      var banco = await db.initDB();
      var tempList = await banco.rawQuery('SELECT * FROM Empresa');
      setState(() {
        list = new List();
        listArray = new List();
        list = new List.from(tempList);
      });
    });
    

    【讨论】:

    • 嘿,我以类似的方式解决了这个问题,我编辑了你的答案。谢谢迪内什!
    • 抱歉,我跳过了您的编辑。 banco.rawQuery 应该给出new List。我们必须创建另一个吗?
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多