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