【发布时间】:2020-03-09 14:27:54
【问题描述】:
flutter 和 firebase 的新手。我试图在流的帮助下从 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 中有数据,也会显示条件的 else 部分,即没有显示数据。我不知道我哪里出错了。 我试图检索的文档位于 User/uid/VaccineAdministered 文件夹中。
数据库:
【问题讨论】:
-
添加你的firestore的截图
-
@peter 已上传! imgur.com/qXz0Zps
-
inside
_userDataFromSnapshot打印(snapshot.data) 并检查你得到了什么
标签: firebase flutter google-cloud-firestore