簡體   English   中英

我如何檢索列表<map<string,object> &gt; 從雲 Firestore 並將其轉換為自定義 model? </map<string,object>

[英]How do i retrieve a List<Map<String,Object>> from cloud firestore and convert it into a custom model?

我的數據結構如下所示: 在此處輸入圖像描述

我想檢索我使用此完成的數據,其中 studentReference 是對學生集合的 CollectionReference。 在此處輸入圖像描述

這給了我這個在此處輸入圖像描述

現在我想將 map 這個數據轉換成一個自定義主題 class 看起來像這樣

class Subjects {
  int totalAttended;
  int attended;
  int missed;
  final String subjectName;
  final String subjectId;
  final String subjectTeacher;

  Subjects(
      {this.attended,
      this.missed,
      this.totalAttended = 0,
      this.subjectId,
      this.subjectName,
      this.subjectTeacher});
}

但無法弄清楚如何進行此映射。 我知道我需要使用 stream 但不知道如何。

任何幫助將不勝感激。

今后在共享代碼時盡量不要使用屏幕截圖。 Firebase 集合是一回事,但是您的retreiveData和 print 語句很容易被嵌入代碼中。 如果有人想提供幫助並需要將您的代碼粘貼到他們的 IDE 中,他們肯定不想手動輸入。

無論如何,這應該讓你大部分時間到達那里。 它至少應該給你這個想法。 通過查看您的收藏, Subjects是一個包含 2 張地圖的列表。 所以這里有一個 function 遍歷列表,從映射中提取鍵/值對,從值中創建一個Subjects object,將Subjects對象添加到列表中,然后返回列表。

List<Subjects> getSubjects(List subjectList) {
  final List<Subjects> list = [];

  for (int i = 0; i < subjectList.length; i++) {
    final map = subjectList[i];
    final totalAttended = map['totalAttended'];
    final attended = map['attended'];
    final missed = map['missed'];
    final subjectName = map['subjectName'];
    final subjectId = map['subjectId'];
    final subjectTeacher = map['subjectTeacher'];

    final subject = Subjects(
        totalAttended: totalAttended,
        attended: attended,
        missed: missed,
        subjectName: subjectName,
        subjectTeacher: subjectTeacher,
        subjectId: subjectId);

    list.add(subject);
  }
  return list;
}

您可以在retreiveData function 之外聲明一個subjectList ,然后在您當前有打印語句的地方,您可以這樣做

subjectList = getSubjects(value.data()['subjects']);

然后你有一個Subjects對象列表,你可以根據需要使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM