firebase - 如何从 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 中。
数据库:
解决方案
改变这个:
return vaccTaken.document(uid).collection('Vaccine Administered').document().snapshots()
进入这个:
return vaccTaken.document(uid).collection('Vaccine Administered').snapshots()
检索数据时需要参考文档
推荐阅读
- javascript - 使用javascript存储意图的对话并在意图在aws lex中关闭时将其邮寄
- xcode - - 'TextTheme' 来自 'package:flutter/src/material/text_theme.dart' 或定义一个名为 'subhead' 的 getter 或字段。.副标题
- windows-10 - 为什么我的Win10打不开cmd窗口?
- r - R Shiny 基于同一个表中的反应性更新 DT 单元
- amazon-web-services - 使用 EC2 服务器作为 Nat 网关
- javascript - Axios Config with Auth Header,最佳实践?
- reactjs - 网格中不存在的列的 ag-grid 外部过滤器(服务器端模型)
- flutter - 如何在 FutureBuilder 的 Future.wait 函数中缓存 Future 以在每次状态更改时不重建
- reactjs - 如何从 Axios 获取请求中提取数据?
- php - 如何在 ubuntu 21.04 中下载 php7.2-gd 扩展?