firebase - Flutter:如何在 Firestore 数据库中获取项目的子项
问题描述
嗨,我有一个 Firestore 数据库,如下所示:
我试图让数据循环遍历每个聊天并将数据添加到可见性仪表板小部件中,作为聊天的名称和发送的最后一条消息,因此应用程序希望像这样丢失。
这是我尝试过的代码,我已经四处寻找如何做到这一点,但我只能在 Java 中找到解决方案。
StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('dashboard').snapshots(),
builder: (context, snapshot){
if(!snapshot.hasData){
}else{
final dashboards = snapshot.data.documents;
List<Dashboard> dashboardList = [];
for (var dashboard in dashboards){
final String nameOfChat = dashboard.data['chats']['nameOfChat'];
final String lastMessageSent = dashboard.data['chats']['lastMessageSent'];
final String username = dashboard.data['displayDashboardTo'];
final String displayDashboardToUID = dashboard.data['uid'];
dashboardCard = Dashboard(
nameOfChat: nameOfChat,
lastMessageSent: lastMessageSent,
displayDashboardTo: username,
);
dashboardList.add(dashboardCard);
}
return Visibility(
visible: true,
child: Expanded(
child: ListView(
children: dashboardList,
),
),
);
}
}
),
谢谢。
解决方案
由于“聊天”字段是一个数组,因此您必须遍历它。
final dashboards = snapshot.data.documents;
List<Dashboard> dashboardList = [];
for (var dashboard in dashboards){
final Map data = dashboard.data;
var chats = data['chats'];
for(var chat in chats) {
final String nameOfChat = chat['nameOfChat'];
final String lastMessageSent = chat['lastMessageSent'];
final String username = chat['displayDashboardTo'];
final String displayDashboardToUID = chat['uid'];
dashboardCard = Dashboard(
nameOfChat: nameOfChat,
lastMessageSent: lastMessageSent,
displayDashboardTo: username,
);
dashboardList.add(dashboardCard);
});
}
推荐阅读
- java - Jhipster 网关直接调用微服务
- xaml - UWP TreeView 编辑数据绑定树项节点
- amp-html - 如何修复“amp-autocomplete 数据属性‘值’必须映射到字符串类型。’ 放大器自动完成错误
- node.js - 附加属性 sequelize pivot n:m
- html - 将时间戳添加到R中的html文件
- kubernetes - Kubernetes ConfigMap YAML 到 Terraform Kubernetes
- r - R data.table条件计算
- wordpress - 自定义 WordPress 模板显示空白页
- java - 从推送通知重新打开活动/片段 - 所有以前的数据都被遗忘了吗?
- javascript - 将数据附加到谷歌电子表格 V4