gpt4 book ai didi

firebase - 我怎样才能等到在 Flutter 中检索到 Firebase 数据库数据?

转载 作者:行者123 更新时间:2023-12-05 04:31:53 26 4
gpt4 key购买 nike

我正在使用 flutter,我有一个简单的方法可以读取数据库中存在的每个用户并将它们添加到列表中,一旦完成读取用户,该方法必须返回包含所有读取数据的列表,我的问题是我的函数不会等待 Listener 完成阅读,然后甚至在 Listener 完成阅读之前就返回我的列表 (myList)。在 Listener 读取所有元素之前,如何等待返回 myList?

代码如下:

Future<List<String>> getUsers () async {

List<String> myList = [];

final mRef = FirebaseDatabase.instance.ref().child("Users");

mRef.onValue.listen((event) async {
for (final child in event.snapshot.children) {

myList.add( child.value.toString() ); //ADDS THE VALUE TO THE LIST

}
});

//RETURN THE LIST
return myList;

}

我试图在我的 Listener 前面放置一个等待,但没有任何效果。

最佳答案

监听器是等待更改(添加新文档等)并在发生更改时通知您的东西。所以它不是在你调用它之后开始/结束的东西 - 你通常在你的 Flutter 类的 init 中创建它,并且它会在任何事情发生变化时改变状态。

看起来您想要捕获所有用户,一次,而不是像您目前所做的那样倾听

所以与其听,也许只是阅读数据。像这样的东西:

// fetch all the documents
final allDocs =
await FirebaseFirestore.instance.collection('users').get();
// map them to something like your strings.
final thedetails = allDocs.docs.map((DocumentSnapshot e) => e.data()!.toString()).toList();
return thedetails;

关于firebase - 我怎样才能等到在 Flutter 中检索到 Firebase 数据库数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71764640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com