我尝试显示当前用户的帖子,帖子ID和用户ID相同,当我具体到列表视图代码时出错(
snapshot.data!.docs.map((DocumentSnapshot document))
我得到了这个错误:
没有为类型"DocumentSnapshot〈Map〈String,dynamic〉〉"定义getter "docs"。请尝试导入定义"doc"的库,将名称更正为现有getter的名称,或者定义getter或字段名称"docs"。
我该怎么办?我做错什么了?
我的代码:
class MyRidesScreen extends StatefulWidget {
const MyRidesScreen({super.key});
@override
State<MyRidesScreen> createState() => _MyRidesScreenState();
}
class _MyRidesScreenState extends State<MyRidesScreen> {
Stream<DocumentSnapshot<Map<String, dynamic>>> myPosts = FirebaseFirestore
.instance
.collection('ADS')
.doc(FirebaseAuth.instance.currentUser!.uid)
.snapshots();
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: myPosts,
builder: (BuildContext context, snapshot) {
if (snapshot.hasError) {
return const Center(
child: Text(
'Error occured',
style: TextStyle(fontSize: 20),
));
}
if (!snapshot.hasData) {
return const Center(child: Text('No requests yet'));
}
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: Text("Loading"));
}
return ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data =
document.data()! as Map<String, dynamic>;
return Card(
child: ListTile(),
);
}),
);
});
}
}
广告收集
用户集合
1条答案
按热度按时间3qpi33ja1#
问题是你试图在一个文档上调用
docs
,你只能得到一个集合/查询的文档,而不能在另一个文档上,因为这是不符合逻辑的。您应该仅在
CollectionReference
或Query
上调用docs
。另一方面,如果您只想显示存在于"ADS"集合中的文档,那么您应该直接在Flutter小部件中使用它,而不是尝试在它上面调用
docs
:而不是这样:
你应该使用这个: