gpt4 book ai didi

firebase - 在列表中添加元素

转载 作者:行者123 更新时间:2023-12-03 03:16:34 25 4
gpt4 key购买 nike

我是Flutter的新手,我正尝试将Cloud Firestore中的一些数据添加到Flutter中的列表中,但是遇到了问题。我尝试添加该元素,但是执行后,该元素不存在。它也不抛出异常或任何异常。也许其他人对我有一些建议!

我尝试更改列表的类型(从Cloud Firestore捕获文档而不是doc中的数据,这是同一问题),我还调试了我试图存储的数据以确保它确实存在。我已经完成了基本的故障排除工作,例如还运行了Flutter Clean。我正在使用最新版本的Flutter。

Firestore db = firestore();

List<String> getString() {

var dataList = new List<String>();

db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
});

debugPrint(dataList.first);

return dataList;

该列表为空,尽管该字段应包含此Cloud Firestore文档上的“名字”字段。再次验证数据是否存在,并在调用debugPrint时进行打印。

最佳答案

db.collection('Users').get()是一个异步函数,因此debugPrint(dataList.first);在Firestore结束之前执行,因为您的数组返回空。

如果您尝试:

db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
});

您将看到您的数据。

您可以使用 await等待调用完成,因此必须返回 Future并在函数声明中使用 async关键字。这是您必须了解的抖动异步函数( Async Flutter)的概念。因此,下面的代码可以解决您的问题。
Firestore db = firestore();

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

var dataList = new List<String>();

var result = await db.collection('Users').get();
result.forEach((doc) {
dataList.add(doc.get('First name'));
});

debugPrint(dataList.first);

return dataList;
}

关于firebase - 在列表中添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57731473/

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