颤振未来功能

时间:2021-02-10 19:45:43

标签: flutter

我正在尝试从 firebase 获取一些数据,然后使用该数据获取其他信息。我正在尝试使用未来功能来做到这一点。问题是一切正常,但列表最后显示为空,我不知道如何让它等到值被添加到列表然后出现。正如您在这张照片中看到的那样,列表出来是空的,而不是在打印出结果之后,当您查看代码时,反之亦然。我使用 await 尝试了一些东西,但没有成功。 https://gyazo.com/4dc9b3b4d459270c7c4bf146baa6ae25 大家怎么看?

<Text style={styles.nameText}>{username}</Text>

1 个答案:

答案 0 :(得分:0)

您必须在使用 'await' 和 'then' 关键字之间做出选择,不建议同时使用两者。有关差异的详细说明,请参阅 Async/Await/then in Dart/Flutter

Future <List<Map < dynamic, dynamic >>> getData() async {
  List<Map < dynamic, dynamic >> lists = [];
  DataSnapshot snapshot = await databaseReference.once();
  Map < dynamic, dynamic > values = snapshot.value;
  await values.forEach((key, values) async {
      DataSnapshot snapshotUser = await FirebaseDatabase.instance.reference().child("Users/" + values["UID"].toString() + "/Name").once();
      lists.add(snapshotUser.value);
      print(snapshotUser.value);
   }
   print(lists);
   return lists;
}