firebase - 如何在颤动中获取屏幕上的地图数据
问题描述
字段问题和问题 1 是映射,然后我有四个字符串选项字段和一个答案字段。我正在提取这样的数据,
Widget build(BuildContext context) {
Future<DocumentSnapshot> getQuizInfo() async {
return await FirebaseFirestore.instance
.collection("quizzes")
.doc('IQfcs1xF6j0ZrRTVDG3b')
.get();
}
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
decoration:
BoxDecoration(border: Border.all(color: Colors.black)),
child: ListTile(
title: FutureBuilder(
future: getQuizInfo(),
builder:
(context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
Card(child:Text("Q # 01"+snapshot.data!.data()["questions"]
["question 1"]["description"]));
Card(child:Text(snapshot.data!.data()["questions"]
["question 1"]["option 1"]));
return Text("Q # 01"+snapshot.data!.data()["questions"]
["question 1"]["description"]+'\n'+"a) "+snapshot.data!.data()["questions"]
["question 1"]["option 1"]+'\n'+"b) "+snapshot.data!.data()["questions"]
["question 1"]["option 2"]+'\n'+"c) "+snapshot.data!.data()["questions"]
["question 1"]["option 3"]+'\n'+"d) "+snapshot.data!.data()["questions"]
["question 1"]["option 4"]);
} else if (snapshot.connectionState ==
ConnectionState.none) {
return Text("No data");
}
return CircularProgressIndicator();
},
),
)),
],
));
} }
但这似乎不是一种有效的方法。没有任何方法可以获取整个文档的数据并将其加载到屏幕上。
解决方案
我建议只是循环,snaopshot
因为它已经是一个Map<String, dynamic>
像这里这样的类型的地图。
Text
另外,我建议不要生成一个大的wigget,而是使用一个内部Column
有多个小部件的Text
小部件,以更加灵活。
推荐阅读
- vb.net - Datatable 仅检索我的 CSV 文件的第一列
- javascript - 多边无向图的循环枚举
- javascript - 多个值的换色器
- azure-log-analytics - 从 Databricks 将日志推送到 Log Analytics
- java - 如何使用来自迭代器和 for 循环的流/过滤器/lambda?
- go - 如何编组数据并在 websocket 上发送?
- html - IE11 上的置顶页脚
- java - 类型 TouchActions 的方法 tap(TapOptions) 未定义
- spring-boot - Spring Boot MVC 允许控制器中的任何类型的内容类型
- javascript - 当我动态添加包含 div 的行时,为什么我的 HTML 表格列会调整大小?