我正在尝试显示提醒列表,以便用户查看所有提醒并可以对其进行编辑。我正在使用StreamProvider,以便能够在子窗口小部件中进行访问。我将DocumentSnapShot映射到MedReminder对象。 StreamProvider应该返回MedReminder对象的List。但是在ReminderList小部件中,提供程序返回null。
流:
List<MedReminder> _medReminderListFromSnapshot(QuerySnapshot snapshot) {
print('here is db');
return snapshot.documents.map((doc) {
return MedReminder(
remindId: doc.data['remindId'] ?? '',
howManyTimeDay: doc.data['howManyTimeDay'] ?? '',
frequency: doc.data['frequecy'] ?? '',
hour: doc.data['hour'] ?? '',
min: doc.data['min'] ?? '',
dateStarted: doc.data['dateStarted'] ?? '',
dateEnded: doc.data['dateEnded'] ?? '',
dateRefill: doc.data['dateRefill'] ?? '',
quantityTime: doc.data['quantityTime'] ?? '',
);
}).toList();
}
Stream<List<MedReminder>> get medReminders {
return userCollection.document(uid).collection('medic_reminder').snapshots()
.map(_medReminderListFromSnapshot);
}
提醒页面:
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return StreamProvider<List<MedReminder>>.value(
value: DatabaseService(uid: user.uid).medReminders,
child: Scaffold(
body: Container(
child: ReminderList(),
),
),
);
}
提醒列表小部件(此处提供程序返回null):
Widget build(BuildContext context) {
final reminders = Provider.of<List<MedReminder>>(context) ?? [];
reminders.forEach((reminder) {
print(reminder.remindId);
});
return ListView.builder(
itemCount: reminders.length,
itemBuilder: (context, index) {
return ReminderTile();
});
}
请帮助我谢谢。
答案 0 :(得分:0)
Stream<List<MedReminder>> get medReminders {
return userCollection.snapshots()
.map(_medReminderListFromSnapshot);
}
使用uid将数据存储在userCollection中,不要添加其他集合
喜欢
collectionReference userCollection = Firestore.instance.collection('users');
在“用户”中保存数据时
userCollection.document(uid).setData()..
然后有效