как получить список данных json в listview с помощью класса модели?

#flutter

Вопрос:

Я хочу получить все данные о субъектах в виде списка, такие как имя субъекта, изображение и т. Д.

Я получаю данные из простого json, но не могу получить их из списка json.

Ответ выглядит следующим образом,

 {
  "success": 1,
  "subject": [
    {
      "subject_id": "5e32874c714fa",
      "subject_name": "Account",
      "image": "upload/subject/Account.png",
      "active": "1",
      "standard_id": "5d1594e283e1a",
      "medium_id": "5d15938aa1344"
    },
    {
      "subject_id": "5da9ff659fb7c",
      "subject_name": "Biology",
      "image": "upload/subject/03_logo-1164x484.png",
      "active": "1",
      "standard_id": "5d1594e283e1a",
      "medium_id": "5d15938aa1344"
    },
    {
      "subject_id": "5da9ff990b1c6",
      "subject_name": "Chemisty",
      "image": "upload/subject/02_logo-1168x490.png",
      "active": "1",
      "standard_id": "5d1594e283e1a",
      "medium_id": "5d15938aa1344"
    },
    {
      "subject_id": "5de76afbd064e",
      "subject_name": "Computer",
      "image": "upload/subject/07_logo-1169x486.png",
      "active": "1",
      "standard_id": "5d1594e283e1a",
      "medium_id": "5d15938aa1344"
    },
    {
      "subject_id": "5d788906c431b",
      "subject_name": "Devsatya Paperset March 2020",
      "image": "upload/subject/04_logo-1174x491.png",
      "active": "1",
      "standard_id": "5d1594e283e1a",
      "medium_id": "5d15938aa1344"
    }
  ]
}
 

И я создал класс модели из app.quicktype.io/ как показано ниже.

 // To parse this JSON data, do
//
//     final subjectByUser = subjectByUserFromJson(jsonString);

import 'dart:convert';

SubjectByUser subjectByUserFromJson(String str) => SubjectByUser.fromJson(json.decode(str));

String subjectByUserToJson(SubjectByUser data) => json.encode(data.toJson());

class SubjectByUser {
    SubjectByUser({
        this.success,
        this.subject,
    });

    int success;
    List<Subject> subject;

    factory SubjectByUser.fromJson(Map<String, dynamic> json) => SubjectByUser(
        success: json["success"],
        subject: List<Subject>.from(json["subject"].map((x) => Subject.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "success": success,
        "subject": List<dynamic>.from(subject.map((x) => x.toJson())),
    };
}

class Subject {
    Subject({
        this.subjectId,
        this.subjectName,
        this.image,
        this.active,
        this.standardId,
        this.mediumId,
    });

    String subjectId;
    String subjectName;
    String image;
    String active;
    String standardId;
    String mediumId;

    factory Subject.fromJson(Map<String, dynamic> json) => Subject(
        subjectId: json["subject_id"],
        subjectName: json["subject_name"],
        image: json["image"],
        active: json["active"],
        standardId: json["standard_id"],
        mediumId: json["medium_id"],
    );

    Map<String, dynamic> toJson() => {
        "subject_id": subjectId,
        "subject_name": subjectName,
        "image": image,
        "active": active,
        "standard_id": standardId,
        "medium_id": mediumId,
    };
}
 

Итак, как я могу получить все сведения о субъектах, такие как имя субъекта и изображение, в виде списка?
например, изображение с левой стороны и имя с правой стороны для всех предметов.

Ответ №1:

Если у вас есть список:

 List<Subject> list = []; // <-- set the list

ListView.builder(itemCount: list.length, itemBuilder: (context, index) {
    return Column(children: [
        Text(list[index].subjectId), 
        Text(list[index].subjectName), 
        Text(list[index].image), 
        Text(list[index].active), 
        Text(list[index].standardId), 
        Text(list[index].mediumId), ],)
    },
 

Комментарии:

1. я должен отображать записи, основанные на пользователях, поэтому мне не нужно использовать класс SubjectByUser в функции?

2. как я могу отображать записи, используя класс SubjectByUser?

3. Тогда у вас будет субъектный пользователь, и вы получите из него список. список = субъект_пользователь.субъект;