Firebase 向列表中添加元素时出现问题
我对Flitter完全是一个新手,我正在尝试将CloudFireStore中的一些数据添加到Flitter的列表中,但有问题。我尝试添加元素,但执行后,元素不在那里。它也不会抛出异常或任何东西。也许别人会给我一些建议 我尝试过更改列表的类型(从Cloud Firestore捕获文档,而不是文档中的数据,同一问题),我还调试并打印了我尝试存储的数据,以确保它存在,它确实存在。我也做过一些基本的故障排除,比如运行flutter clean。我是最新版本的颤振Firebase 向列表中添加元素时出现问题,firebase,flutter,dart,google-cloud-firestore,flutter-web,Firebase,Flutter,Dart,Google Cloud Firestore,Flutter Web,我对Flitter完全是一个新手,我正在尝试将CloudFireStore中的一些数据添加到Flitter的列表中,但有问题。我尝试添加元素,但执行后,元素不在那里。它也不会抛出异常或任何东西。也许别人会给我一些建议 我尝试过更改列表的类型(从Cloud Firestore捕获文档,而不是文档中的数据,同一问题),我还调试并打印了我尝试存储的数据,以确保它存在,它确实存在。我也做过一些基本的故障排除,比如运行flutter clean。我是最新版本的颤振 Firestore db = fires
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;
Firestore db=Firestore();
列表getString(){
var dataList=新列表();
db.collection('Users').get().then((querySnapshot){
querySnapshot.forEach((文档){
dataList.add(doc.get('First name'));
});
});
debugPrint(dataList.first);
返回数据列表;
列表为空,但它应该包含此Cloud Firestore文档上的“First name”字段。再次验证数据是否存在,并在调用debugPrint时打印。db.collection('Users').get()是一个异步函数,因此debugPrint(dataList.First);
在firestores get结束之前执行,因为数组返回空
如果您尝试:
db.collection('Users').get().then((querySnapshot) {
querySnapshot.forEach((doc) {
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
});
您将看到您的数据
您可以使用wait
等待调用完成,因此必须返回Future
并在函数声明中使用async
关键字。这是您必须了解的关于flatter async函数()的概念。因此,下面的代码可以解决您的问题
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;
}
Firestore db=Firestore();
Future getString()异步{
var dataList=新列表();
var result=await db.collection('Users').get();
结果。forEach((doc){
dataList.add(doc.get('First name'));
});
debugPrint(dataList.first);
返回数据列表;
}
我已经回答了这个问题。请确保包含偶尔更新的数据的小部件是有状态的,而不是无状态的。这些问题没有说明小部件组件。但是如果使用它们,小部件当然必须是正确的。啊,这很有意义!此代码正在工作。感谢您的帮助!