当前位置: 首页 > 知识库问答 >
问题:

如何从Flutter中的Firebase获取List

管杜吟
2023-03-14

我在实时数据库中有以下数据:

实时数据库

我想获得examQuestion

当我用这个的时候

  Future<void> restApiExam() async{
    var url= 'https://taw3ia-ac6b2.firebaseio.com/Exam.json';
    try{
      final response = await http.get(url);
      final extractedData = json.decode(response.body) as Map<String, dynamic>;
      final List<ExamModel> loadQuiz =[];
      extractedData.forEach((quizId , quizData){
        loadQuiz.add(ExamModel(
          examId : quizId,
          examTitle: quizData['examTitle'],
          examMark: quizData['examMark'],
          examPassingMark: quizData['examPassingMark'],
          examQuestion: (quizData['examQuestion'] as List<dynamic>).map((question) => QuestionModel(
            questionTitle: question['questionTitle'],
            questionAnswer: question['questionAnswer'].cast<String>(),
            questionImage: question['questionImage'],
            questionPoint: question['questionPoint'],
            rightAnswer: question['rightAnswer'],
          )
         ).toList() ,
          isPublic: quizData['isPublic'],
        ));
      });
      _exam = loadQuiz;
      notifyListeners();
    }
    catch(e){
      throw(e);
    }
  }

错误:

E/flutter(27654):[ERROR: flutter/lib/ui/ui_dart_state.cc(166)]未处理的异常:类型_InternalLinkedHashMap

我的范例:


class ExamModel with ChangeNotifier {
  final String examId;
  final String examTitle;
  final String examMark;
  final String examPassingMark;
  final List<QuestionModel> examQuestion;
  final bool isPublic;


  ExamModel({
    @required this.examId,
    @required this.examTitle,
    @required this.examMark,
    @required this.examPassingMark,
    @required this.examQuestion,
    this.isPublic = false,
  });

}

我的问卷模型:


class QuestionModel with ChangeNotifier{

  final String restById;
  final String questionId;
  final String questionTitle;
  final String questionImage;
  final int questionPoint;
  final List<String> questionAnswer;
  final String rightAnswer;

  QuestionModel({
    @required this.restById,
    @required this.questionId,
    @required this.questionTitle,
    @required this.questionImage,
    @required this.questionPoint,
    @required this.questionAnswer,
    @required this.rightAnswer,
  });

}

共有1个答案

仇征
2023-03-14

在您的图像中:

您的字段称为“eaxmQuestion”,而不是“examQuestion”。有一个打字错误。我不确定这会解决您的问题,但这肯定是一个问题,因为在您的代码中,您正在调用quizData['examQuestion']

 类似资料:
  • 当我收到firebase的通知时,我需要显示自定义对话框。但我不知道如何从通知负载中获取数据 我已经尝试了下面的代码,但它是机器人为我工作 这是我在控制台的有效载荷 flatter:notification message{gcm.message_id:1578573749312232,id:30,google.c.a.e:1,type:test,aps:{alert:{title:notific

  • 我一直无法从Firebase中获取显示名称。下面是注册过程编码 控制台.log显示“用户名集!”,控制台.log(firebaseUser)显示显示名称是在当前用户的数据库中设置的,并且名称是我期望的。然而 给出null,并且 这也返回为null。 我一直在寻找获取firebase数据集数据的方法,但我无法做到这一点。 如果有人能给我一些建议,那就太好了。 非常感谢。

  • 我想获取日期字段,但下面的代码没有这样做。Toast显示null(字符串日期的值)。 公共字符串日期;

  • 问题内容: 我正在尝试获取Firebase存储桶中文件的“长期持久下载链接”。我已将其权限更改为 我的javacode看起来像这样: 当我运行它时,我得到的uri链接看起来像 com.google.android.gms.tasks.zzh@xxx 问题1.我是否可以从中获得类似于以下内容的下载链接:https : //firebasestorage.googleapis.com/v0/b/pro

  • 我想在Android Studio中获取isSeen节点的值。M6F2mJjQ8uGPXAynZzV是消息的id,并将消息更改为消息。我想在适配器类中获得这个值。

  • 如何像TikTok一样获得随机文档?也就是说,比方说,我按下按钮,数据库中的一些随机记录在我看来。