首页 > 解决方案 > 如何在颤动中获取屏幕上的地图数据

问题描述

我在后端使用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();
                },
              ),
            )),
      ],
    ));

} }

但这似乎不是一种有效的方法。没有任何方法可以获取整个文档的数据并将其加载到屏幕上。

标签: firebaseflutterdictionarygoogle-cloud-firestore

解决方案


我建议只是循环,snaopshot因为它已经是一个Map<String, dynamic>这里这样的类型的地图。

Text另外,我建议不要生成一个大的wigget,而是使用一个内部Column有多个小部件的Text小部件,以更加灵活。


推荐阅读