扑扑的Firebase子集合文档

时间:2020-05-12 20:27:51

标签: firebase flutter dart google-cloud-firestore

enter image description here

我有一个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]);
  },
);
}
}

2 个答案:

答案 0 :(得分:0)

您应该做的是... snapshots()。listen(_remListFromSnapshot);

答案 1 :(得分:0)

您缺少监听方法。

您可以通过以下方式使用listen方法:

Stream<List<Reminder>> get reminders {
return usersCollection.document(uid).collection('reminders')
  .snapshots()
  .listen(_remListFromSnapshot);
}

Here是另一个Stackoverflow,其状态与以前相同。

让我知道它是否对您有用。