Flutter 如何获取Firestore上另一个集合中的集合中的所有文档?

Flutter 如何获取Firestore上另一个集合中的集合中的所有文档?,flutter,dart,Flutter,Dart,嗯,我正在尝试构建一个功能,当我点击一个我最喜欢的图标时,我会选择一个地方作为我最喜欢的地方之一。如果我想看到我最喜欢的地方,我只需要转到最喜欢的页面,该页面将返回所有我最喜欢的地方。我的firestore上有两个我最喜欢的地方。当我试图得到它们时,什么也不返回。。。这就是问题所在 每个常用文档都包含城市、图像等字段。这是我的数据库: import'包:cloud_firestore/cloud_firestore.dart'; 导入“包:firebase_auth/firebase_auth.

嗯,我正在尝试构建一个功能,当我点击一个我最喜欢的图标时,我会选择一个地方作为我最喜欢的地方之一。如果我想看到我最喜欢的地方,我只需要转到最喜欢的页面,该页面将返回所有我最喜欢的地方。我的firestore上有两个我最喜欢的地方。当我试图得到它们时,什么也不返回。。。这就是问题所在

每个常用文档都包含城市、图像等字段。这是我的数据库:

import'包:cloud_firestore/cloud_firestore.dart';
导入“包:firebase_auth/firebase_auth.dart”;
进口“包装:颤振/材料.省道”;
类收藏夹扩展了StatefulWidget{
@凌驾
_FavoriteState createState()=>\u FavoriteState();
}
类\u FavoriteState扩展状态{
@凌驾
小部件构建(构建上下文){
double width=MediaQuery.of(context).size.width;
double height=MediaQuery.of(context).size.height;
动态loadFavorites()异步{
final FirebaseUser user=等待FirebaseAuth.instance.currentUser();
最终动态userUid=user.uid;
返回userUid;
}
动态文档=loadFavorites();
返回脚手架(
正文:SingleChildScrollView(
子:列(
儿童:[
填充物(
填充:仅限边缘设置(顶部:30.0,底部:5.0),
子项:文本(“Favoritos”,
样式:TextStyle(字体大小:20),
textAlign:textAlign.center,
),
),
容器(
孩子:未来建设者(
未来:Firestore.instance.collection(“用户”).document(document.toString()).collection(“收藏夹”).getDocuments(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回中心(子项:CircularProgressIndicator());
}否则{
return snapshot.data.documents.isEmpty?Center(子项:Text(“Nenhum favorito escolhido”):ListView.builder(
物理学:const NeverScrollableScrollPhysics(),
滚动方向:轴垂直,
收缩膜:对,
itemCount:snapshot.data.documents.length,
itemBuilder:(上下文,索引){
返回容器(
填充:所有边缘设置(10.0),
子级:buildFavorite(宽度、高度、快照.数据.文档[索引]),
);
},
);
}
},
),
),
],  
),
),     
);   
}
Widget buildFavorite(双宽、双高、文档快照文档){
返回容器(
填充:所有边缘设置(10.0),
装饰:盒子装饰(
颜色:颜色,白色,
boxShadow:[
箱形阴影(
颜色:颜色。灰色,
偏移量:偏移量(1.0,1.0),
半径:10.0,
),
],
边界半径:边界半径。圆形(10.0),
),
子:堆栈(
儿童:[
//填充(填充:仅限边集(顶部:100),),
容器(
边距:仅限边集(底部:20.0,左侧:20.0),
子项:文本(文档[“标题”],样式:TextStyle(fontSize:18),),
),
容器(
宽度:宽度*0.37,
高度:高度*0.18,
装饰:盒子装饰(
形状:BoxShape.rectangle,
图像:装饰图像(
fit:BoxFit.fill,
图像:NetworkImage(文档[“图像”]),
),
boxShadow:[
箱形阴影(
颜色:颜色。灰色,
偏移量:偏移量(1.0,1.0),
半径:1.0,
),
],
),
边距:仅限边缘设置(左侧:宽度*0.60),
),
划船(
儿童:[
容器(
边距:仅限边缘集(顶部:30.0),
子:图标(Icons.location\u on,颜色:Colors.red,),
),
容器(
边距:仅限边集(左侧:10.0,顶部:30.0),
子项:文本(文档[“文本]),
),
],
),
划船(
儿童:[
容器(
边距:仅限边缘集(顶部:60.0),
子:图标(Icons.phone,颜色:Colors.red),
),
容器(
边距:仅限边集(左侧:10.0,顶部:60.0),
子项:文本(文档[“电话]),
),
],
),
划船(
儿童:[
容器(
边距:仅限边缘集(顶部:90.0),
子:图标(Icons.timer,颜色:Colors.red,),
),
容器(
边距:仅限边集(左侧:10.0,顶部:90.0),
子项:文本(文档[“时间]),
),
],
),
],
),
);
}
}

您的问题在于:

future:Firestore.instance.collection(“用户”).document(document.toString()).collection(“收藏夹”).getDocuments(),
document.toString()
将返回Future的
实例
,因为此变量的实际类型是
loadUser()
函数的返回类型,该函数是
Future
,对象的
toString()
方法通常是
类名的实例
。通常,我强烈建议您使用dart的类型安全性,始终使用显式类型而不是动态类型!使用类型时发生的错误表明您正在尝试的内容是不正确的,这有助于更好地理解应该是什么类型的值