Flutter-导航器回调刷新屏幕中的异步方法

时间:2018-08-08 11:41:24

标签: async-await dart flutter future

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

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

我需要使用此setState,setupList方法更新 list 变量:

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

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

1 个答案:

答案 0 :(得分:2)

如果问题是#include <iostream> #include <vector> #include <string> #include <algorithm> #include <fstream> using namespace std; int mini, maxi; int *list = new int[10000002]; int *visited = new int[10000002]; bool is_pal(string num) { string num2 = num; reverse(num2.begin(), num2.end()); if (num2 == num) return true; return false; } int main() { visited[4] = 1; visited[6] = 1; visited[8] = 1; visited[9] = 1; cin >> mini >> maxi; for (int i = mini; i <= maxi; i++) list[i] = i; for (int i = mini; i <= maxi; i++) { if (visited[i] == 0) { for (int j = i * 2; j <= maxi; j += i) { visited[j] = 1; list[j] = -1; } } } for (int i = mini; i <= maxi; i++) if (visited[i] == 0 && is_pal(to_string(list[i]))) cout << list[i] << "\n"; return 0; } ,您可以试试吗?

async

编辑:

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