Не могу уметь создавать модели для динамических значений клавиш во флаттере - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь создать класс модели для значений динамического ключа, исходящих из конечной точки или JSON, но он всегда возвращает мне нулевое значение, если я печатаю значение, то значение выводится на печать, пожалуйста, помогите друзьям

Я попробовал Карты и список, а также использовал для каждого элемента

Вот мой JSON https://events.xelits.com/api/westeraf/agenda

  {
    "Agenda": [
      {
        "session1": [
          {
            "id": 1,
            "time": "7:45-7:57 AM",
            "startTime": "7:45-",
            "endTime": "7:57",
            "name": "ATRIAL FIBRILLATION: I'VE SEEN IT ALL! ",
            "designation": "Eric N. Prystowsky, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/AF-Utah-2-19-AFIve-seen-it-all.ppt"
          },
          {
            "id": 2,
            "time": "7:57-8:09 AM",
            "startTime": "7:57-",
            "endTime": "8:09",
            "name": "MOLECULAR CARDIAC TISSUE REMODELING AFTER ABLATION OF AF IN HEART FAILURE",
            "designation": "Michael R. Bristow, MD, PhD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Bristow_WAF-Park-City-2-22-19-Final-WS.pptx"
          },
          {
            "id": 3,
            "time": "8:09-8:21 AM",
            "startTime": "8:09-",
            "endTime": "8:21",
            "name": "DECAAF II UPDATE",
            "designation": "Dave Wilber, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Wilber-DECAAF-UPDATE-2019.pptx"
          },
          {
            "id": 4,
            "time": "8:21-8:32 AM",
            "startTime": "8:21-",
            "endTime": "8:32  ",
            "name": "LAA CLOSURE: BEYOND THE BLEEDING PATIENT",
            "designation": "Rahul N. Doshi, MD, FACC, FHRS",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Doshi-WAF-2019.pptx"
          },
          {
            "id": 5,
            "time": "8:32-8:44 AM",
            "startTime": "8:32-",
            "endTime": "8:44",
            "name": "AI IN CARDIOLOGY: FINDING WHAT'S HIDDEN IN PLAIN SIGHT AND PEERING INTO THE FAILURE",
            "designation": "Zachi I Attia, MSc",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/1-Attia.pptx"
          }
        ],
        "session2": [
          {
            "id": 6,
            "time": "7:45-7:57 AM",
            "startTime": "7:45-",
            "endTime": "7:57",
            "name": "ATRIAL FIBRILLATION: I'VE SEEN IT ALL! ",
            "designation": "Eric N. Prystowsky, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/AF-Utah-2-19-AFIve-seen-it-all.ppt"
          },
          {
            "id": 7,
            "time": "7:57-8:09 AM",
            "startTime": "7:57-",
            "endTime": "8:09",
            "name": "MOLECULAR CARDIAC TISSUE REMODELING AFTER ABLATION OF AF IN HEART FAILURE",
            "designation": "Michael R. Bristow, MD, PhD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Bristow_WAF-Park-City-2-22-19-Final-WS.pptx"
          },
          {
            "id": 8,
            "time": "8:09-8:21 AM",
            "startTime": "8:09-",
            "endTime": "8:21",
            "name": "DECAAF II UPDATE",
            "designation": "Dave Wilber, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Wilber-DECAAF-UPDATE-2019.pptx"
          },
          {
            "id": 9,
            "time": "8:21-8:32 AM",
            "startTime": "8:21-",
            "endTime": "8:32  ",
            "name": "LAA CLOSURE: BEYOND THE BLEEDING PATIENT",
            "designation": "Rahul N. Doshi, MD, FACC, FHRS",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/Doshi-WAF-2019.pptx"
          },
          {
            "id": 10,
            "time": "8:32-8:44 AM",
            "startTime": "8:32-",
            "endTime": "8:44",
            "name": "AI IN CARDIOLOGY: FINDING WHAT'S HIDDEN IN PLAIN SIGHT AND PEERING INTO THE FAILURE",
            "designation": "Zachi I Attia, MSc",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/1-Attia.pptx"
          }
        ]
      }
    ],
    "Agenda2": [
      {
        "session1": [
          {
            "id": 1,
            "time": "07:00-07:12 AM",
            "startTime": "7:00-",
            "endTime": "07:12",
            "name": "NOVEL CONCEPTS IN ATRIAL IMAGE PROCESSING USING MACHINE LEARNING IN AF",
            "designation": "Alan Morris, MS",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/700_Morris2019WAF.pptx"
          },
          {
            "id": 2,
            "time": "07:12-07:24 AM",
            "startTime": "7:12-",
            "endTime": "07:24",
            "name": "ABLATE AF BEFORE IT'S TOO LATE!",
            "designation": "Oussama Wazni, MD ",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/712_ablateearly2019-gray.pptx"
          },
          {
            "id": 3,
            "time": "07:24-07:36 AM",
            "startTime": "07:24-",
            "endTime": "07:36",
            "name": "GUIDELINE UPDATE AFTER CABANA & CASTLE IS NEEDED!",
            "designation": "Gerhard Hindricks, Prof. Dr",
            "download": "http://westernaf.com/upload_files/session9/724_Western AF Guidelines Park City 2019.pptx"
          },
          {
            "id": 4,
            "time": "07:36-07:48 AM",
            "startTime": "7:36-",
            "endTime": "07:48",
            "name": "PERSISTENT AF ABLATION USING A NEW & PRACTICAL APPROACH",
            "designation": "Pierre Jais, MD",
            "download": "http://westernaf.com/upload_files/session9/736_Jais.pptx"
          },
          {
            "id": 5,
            "time": "07:48-08:12 AM",
            "startTime": "7:48-",
            "endTime": "08:12",
            "name": "DEBATE: NEW OAC OR LAAC IF A PATIENT BLEEDS ON OAC?",
            "designation": "NEW OAC: Stacy A. Johnson, MD LAA CLOSURE: Boris Schmidt, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/748_2_LAA_AFTER_BLEEDING_02_19.pptx"
          }
        ],
        "session2": [
          {
            "id": 6,
            "time": "07:00-07:12 AM",
            "startTime": "7:00-",
            "endTime": "07:12",
            "name": "NOVEL CONCEPTS IN ATRIAL IMAGE PROCESSING USING MACHINE LEARNING IN AF",
            "designation": "Alan Morris, MS",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/700_Morris2019WAF.pptx"
          },
          {
            "id": 7,
            "time": "07:12-07:24 AM",
            "startTime": "7:12-",
            "endTime": "07:24",
            "name": "ABLATE AF BEFORE IT'S TOO LATE!",
            "designation": "Oussama Wazni, MD ",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/712_ablateearly2019-gray.pptx"
          },
          {
            "id": 8,
            "time": "07:24-07:36 AM",
            "startTime": "07:24-",
            "endTime": "07:36",
            "name": "GUIDELINE UPDATE AFTER CABANA & CASTLE IS NEEDED!",
            "designation": "Gerhard Hindricks, Prof. Dr",
            "download": "http://westernaf.com/upload_files/session9/724_Western AF Guidelines Park City 2019.pptx"
          },
          {
            "id": 9,
            "time": "07:36-07:48 AM",
            "startTime": "7:36-",
            "endTime": "07:48",
            "name": "PERSISTENT AF ABLATION USING A NEW & PRACTICAL APPROACH",
            "designation": "Pierre Jais, MD",
            "download": "http://westernaf.com/upload_files/session9/736_Jais.pptx"
          },
          {
            "id": 10,
            "time": "07:48-08:12 AM",
            "startTime": "7:48-",
            "endTime": "08:12",
            "name": "DEBATE: NEW OAC OR LAAC IF A PATIENT BLEEDS ON OAC?",
            "designation": "NEW OAC: Stacy A. Johnson, MD LAA CLOSURE: Boris Schmidt, MD",
            "download": "https://westernaf.com/wp-content/uploads/2019/02/748_2_LAA_AFTER_BLEEDING_02_19.pptx"
          }
        ]
      }
    ]
  }
]

Here endpoint is that Session 1 will be the session heading and an array of values will be list in it
Here code I have tried


class Agenda {
  final List<SessionAgenda> particularAgenda;
  const Agenda({this.particularAgenda});
  factory Agenda.fromJson(List<dynamic> json) {
    if (json == null) return null;
    var mainResponse = json[0];
    var agenda = mainResponse['Agenda'] as List;
    agenda[0].forEach((key, value) => print('Key: $key'));
    // List<SessionAgenda> sessionagendalist1 = agenda[0].forEach((key, value) =>
    //     value.map((sessionAgenda) => plist.add(value)).toList());
    //  SessionAgenda.fromJson(key, mainResponse['Agenda'][0][key])
    // value.map((sessionAgenda) => print(sessionAgenda[key])).toList()
    List<SessionAgenda> sessionagendalist2 = agenda[0].forEach((key, value) =>
        value
            .map((sessionAgenda) => SessionAgenda.fromJson(key, value))
            .toList());
    print(sessionagendalist2.toString());
    return Agenda(
      particularAgenda: sessionagendalist2,
    );
  }
}

class SessionAgenda {
  final String keyvalue;
  final List<ParticularAgenda> particularAgenda;
  const SessionAgenda({this.keyvalue, this.particularAgenda});
  factory SessionAgenda.fromJson(
      String keyvalue, List<ParticularAgenda> particularAgenda) {

    return SessionAgenda(
        keyvalue: keyvalue, particularAgenda: particularAgenda);
  }
}

class ParticularAgenda {
  final int id;
  final String time;
  final String startTime;
  final String endTime;
  final String name;
  final String designation;
  final String download;

  const ParticularAgenda({
    this.id,
    this.time,
    this.name,
    this.designation,
    this.download,
    this.startTime,
    this.endTime,
  });
  factory ParticularAgenda.fromJson(Map<String, dynamic> parsedJson) {
    return ParticularAgenda(
      id: parsedJson['id'],
      time: parsedJson['time'],
      name: parsedJson['name'],
      designation: parsedJson['designation'],
      download: parsedJson['download'],
      startTime: parsedJson['startTime'],
      endTime: parsedJson['endTime'],
    );
  }
}

Я получаю нулевое значение, когда возвращаюсь в список, если я печатаюзначения это печатается

...