扑扑和火力堡垒新手。我正在尝试借助流从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')
);
}
}
);
}
}
即使firebase中有数据,条件的其他部分也会显示,即没有数据显示。我不知道我要去哪里错了。 我试图检索的文档位于用户/ uid / VaccineAdministered文件夹中。
数据库:
答案 0 :(得分:0)
更改此:
return vaccTaken.document(uid).collection('Vaccine Administered').document().snapshots()
对此:
return vaccTaken.document(uid).collection('Vaccine Administered').snapshots()
检索数据时需要参考文档