我有一个usersData集合,它有一个User.uid文档,它有一个Reminders集合。 (在屏幕截图中)我正在尝试获取此集合的流并将其输出到Flutter。但是会出现一种空虚。
final CollectionReference usersCollection = Firestore.instance.collection('usersData');
获得收藏
Stream<List<Reminder>> get reminders {
return usersCollection.document(uid).collection('reminders').snapshots().map(_remListFromSnapshot);}
地图
List<Reminder> _remListFromSnapshot(QuerySnapshot snapshot){
//print(snapshot.toString());
return snapshot.documents.map((doc)
{
print("Test " + doc.data['description']);
return Reminder(
description: doc.data['description'] ?? '',
);
}).toList();
}
元素的窗口小部件
final Reminder reminder;
ReminderTile({this.reminder});
Widget build(BuildContext context) {
print("Here " + reminder.description);
return Padding(
padding: EdgeInsets.only(top: 8.0),
child: Card(
margin: EdgeInsets.fromLTRB(20, 6, 20, 0),
child: ListTile(
leading: CircleAvatar(
//backgroundImage: AssetImage('assets/coffee_icon.png'),
radius: 25.0,
backgroundColor: Colors.brown[300],
),
title: Text(reminder.description),
),
),
);
}
和列表小部件
class RemList extends StatefulWidget {
@override
_RemListState createState() => _RemListState();
}
class _RemListState extends State<RemList> {
@override
Widget build(BuildContext context) {
final reminders = Provider.of<List<Reminder>>(context) ?? [];
return ListView.builder(
itemCount: reminders.length,
itemBuilder: (context, index) {
return ReminderTile(reminder: reminders[index]);
},
);
}
}
答案 0 :(得分:0)
您应该做的是... snapshots()。listen(_remListFromSnapshot);
答案 1 :(得分:0)
您缺少监听方法。
您可以通过以下方式使用listen方法:
Stream<List<Reminder>> get reminders {
return usersCollection.document(uid).collection('reminders')
.snapshots()
.listen(_remListFromSnapshot);
}
Here是另一个Stackoverflow,其状态与以前相同。
让我知道它是否对您有用。