Новое в трепетании и пожаре. Я пытаюсь получить пользовательские данные из Firebase с помощью потока, а затем пытаюсь отобразить их для пользователя в виджете Stream Builder. Это код для извлечения
class DatabaseService {
final String uid;
DatabaseService({this.uid});
CollectionReference vaccTaken = Firestore.instance.collection('User');
Stream<UserData> get userData {
return vaccTaken.document(uid).collection('Vaccine Administered').document().snapshots()
.map(_userDataFromSnapshot);
}
UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
return UserData(
uid: uid,
name: snapshot.data['name'],
vaccineName: snapshot.data['vaccine given'],
);
}
и это для отображения извлеченных данных
class _VaccBodyState extends State<VaccBody> {
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return StreamBuilder(
stream: DatabaseService(uid: user.uid).userData,
builder: (context,snapshot) {
if(snapshot.hasData){
return Container(
child: Column(
children: <Widget>[
Expanded(child: ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext ctxt, int index){
return new Text(snapshot.data[index]);
}
))
],
)
);
}else{
return Container(
child: Text('No data')
);
}
}
);
}
}
Даже если в базе данных есть данные, отображается другая часть условия, т.е. показывается. Я понятия не имею, где я иду не так. Документы, которые я пытаюсь получить, находятся в папке User / uid / VaccineAdministered.
База данных: