首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将Fi还原查询保存在列表中

无法将Fi还原查询保存在列表中
EN

Stack Overflow用户
提问于 2021-01-21 09:11:05
回答 2查看 54关注 0票数 0

基本上,我需要将集合的字段保存在一个列表中。

这是负责连接到数据库的小部件:

代码语言:javascript
运行
复制
  Future<QuerySnapshot> MissionRetriever1() async{
    await FirebaseFirestore.instance
        .collection("quest")
        .doc("1")
        .get();
    }

这是另一个文件中包含的小部件,它负责将各种数据保存在列表中:

代码语言:javascript
运行
复制
  Future<void> getMission1() async{
   var snap = await widget.mservice.MissionRetriever1();
   for(var doc in snap.docs){
     MissionData1.add(doc.data()['Q_Category']);
     MissionData1.add(doc.data()['Q_Name']);
     MissionData1.add(doc.data()['Q_Description']);
     MissionData1.add(doc.data()['Q_Score']);
     MissionData1.add(doc.data()['Q_Target']);
   }
  }

但是,当我试图在文本小部件中显示列表中的值时,如下所示:

代码语言:javascript
运行
复制
Text(MissionData1 == null ?  "Loading..." : MissionData1[1],
                                      style: TextStyle(
                                          fontWeight: FontWeight.bold,
                                          fontFamily: 'Roboto',
                                          color: const Color(0xFF3A404C),
                                          fontSize: 14.0.sp),),

他告诉我列表中没有值( RangeError (索引):无效值:有效值范围为空: 1 )

这是Firestore集合:

EN

回答 2

Stack Overflow用户

发布于 2021-01-21 11:08:56

您不会从MissionRetriever1()返回快照,因此var snap基本上等于零。

这样做吧:

代码语言:javascript
运行
复制
Future<DocumentSnapshot> MissionRetriever1() async{
    await FirebaseFirestore.instance
        .collection("quest")
        .doc("1")
        .get();
    }
代码语言:javascript
运行
复制
Future<void> getMission1() async{
   DocumentSnapshot snap = await widget.mservice.MissionRetriever1();
   Map<String,dynamic> data = snap.data();
   MissionData1.add(data['Q_Category']);
   MissionData1.add(data['Q_Name']);
   MissionData1.add(data['Q_Description']);
   MissionData1.add(data['Q_Score']);
   MissionData1.add(data['Q_Target']);
   }
  }
票数 1
EN

Stack Overflow用户

发布于 2021-01-21 09:18:52

代码语言:javascript
运行
复制
Future<QuerySnapshot> MissionRetriever1() async{
QuerySnapshot querySn = await await FirebaseFirestore.instance
    .collection("quest")
    .get();
return querySn;}

然后querySn.docs将返回一个DocumentSnapshot列表。加上您的列表可能是[]而不是null,然后尝试获取第一个元素,其中没有一个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65824222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档