【发布时间】:2020-08-28 14:46:45
【问题描述】:
我正在尝试使用嵌套的 foreach 检索多个子集合以添加到列表中:
List<Widget> TaskList() {
List<Widget> lines = [];
firestoreInstance.collection("tasks").where("type", isEqualTo: "urgent").getDocuments().then((querySnapshot) {
querySnapshot.documents.forEach((result) {
firestoreInstance.collection("tasks").document(result.documentID).collection("todo").getDocuments().then((querySnapshot) {
querySnapshot.documents.forEach((result) {
lines.add(Row(
children: <Widget> [
Expanded(flex: 7, child: Text("test", style: TextStyle(fontSize: 20))), Expanded(flex: 1, child: Text("test", style: TextStyle(fontSize: 20))), Expanded(flex: 2, child: Text("test", style: TextStyle(fontSize: 20), textAlign: TextAlign.right)), ], ));
});
});
});
});
return lines;
}
上面的代码可以运行,但是列表是空白的。我想这与等待查询完成有关,因为如果我在不访问 Firebase 的情况下用简单的 for 循环替换 forEach,它就可以工作(添加到列表中的行)。我知道我必须以某种方式使用 Future。但我无法真正弄清楚这种嵌套 foreach 场景的语法。
感谢任何帮助或指向有用示例的指针。
【问题讨论】:
-
让你方法 async 和 usr futurebuilder 来构建它。
标签: firebase flutter dart google-cloud-firestore