我在后端使用 firebase。我的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();
},
),
)),
],
));
} }
但这似乎不是一种有效的方式。有没有办法将数据作为一个完整的文档获取并加载到屏幕上。
答案 0 :(得分:0)
我建议只循环遍历 snaopshot
,因为它已经是 Map<String, dynamic>
类型的地图,例如 here。
另外,我建议不要生成一个大的 Text
wigget,我建议使用一个 Column
小部件,它里面有多个 Text
小部件,这样更加灵活。