flutter - 如何基于两个 Firestore 集合构建 Flutter 小部件
问题描述
我在 Firestore 中有两个集合:
事件:
标题
coachId
教练:
姓名
我用 StreamBuilder 制作了一个显示事件的小部件“EventsPage”。现在我需要这个小部件来显示每个事件的教练姓名——比如 coaches[event['coachId']['name']。如何在构建“EventsPage”小部件之前获取“教练”集合?
解决方案
你可以使用嵌套StreamBuilder
的
Widget nestedStreamBuilders() {
return StreamBuilder(
stream: firstStream,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasError) return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Select lot');
case ConnectionState.waiting:
return Text('Awaiting bids...');
case ConnectionState.active:
case ConnectionState.done:
return StreamBuilder(
stream: secondStream,
builder: (BuildContext context, AsyncSnapshot secondSnapshot) {
if (secondSnapshot.hasError)
return Text('Error: ${secondSnapshot.error}');
switch (secondSnapshot.connectionState) {
case ConnectionState.none:
return Text('Select lot');
case ConnectionState.waiting:
return Text('Awaiting bids...');
case ConnectionState.active:
case ConnectionState.done:
return BuildYourWidgetHere();
// you can build your widget here because we have the both data
return null; // unreachable
},
);
}
return null; // unreachable
},
);
}
如果您需要FutureBuilder
这是示例:FutureBuilder_Example
推荐阅读
- c# - 如何在 C# 中正确实例化动态派生对象及其成员
- html - HTML 找不到图片
- c# - 如何在现有 JArray 中添加 JObject?
- android-studio - xml布局不会显示在模拟器上
- google-signin - 构建具有 Google Sign 并支持 Mac 的 iOS 应用
- python - QTreeView 不显示项目
- python - 在 MySQL 表中恢复预期的 UTF-8 欧洲字符
- python - Python2.7:paramiko 不会 SFTP 到端口 115。pysftp 成功
- javascript - G-script : 从存储在 G-Sheet 中的变量中列出和过滤 G-Drive 文件
- scala - Windows-1252 和 ISO-8859-1 之间的桥梁差异