Dart 如何转换列表<;列表<;地图<;字符串,字符串>&燃气轮机&燃气轮机;进入列表<;列表<;CustomObject>&燃气轮机;飞镖

Dart 如何转换列表<;列表<;地图<;字符串,字符串>&燃气轮机&燃气轮机;进入列表<;列表<;CustomObject>&燃气轮机;飞镖,dart,Dart,我想把一个列表转换成一个自定义类,如何在dart中实现这一点 如何转换这个 List<List<Map<String, String>>> = [ { "course_name": "Estimation & Quantity Surveying", "credit": "4", "hours"

我想把一个列表转换成一个自定义类,如何在dart中实现这一点

如何转换这个

List<List<Map<String, String>>> = [
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "IDP - Industrial Design Project phase II",
        "credit": "4",
        "hours": "40",
      }
    ],
    [
      {
        "course_name": "Data Base Management System",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
    ],
  ];

像这样的东西可以达到目的:

class StudentTimeTable {
  final String courseName;
  final String credit;
  final String hours;

  StudentTimeTable.fromMap(Map<String, String> map)
      : courseName = map['course_name'],
        credit = map['credit'],
        hours = map['hours'];

  @override
  String toString() =>
      'StudentTimeTable(courseName = $courseName, credit = $credit, hours = $hours)';
}

void main() {
  List<List<Map<String, String>>> input = [
    [
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "IDP - Industrial Design Project phase II",
        "credit": "4",
        "hours": "40",
      }
    ],
    [
      {
        "course_name": "Data Base Management System",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
    ],
  ];

  List<List<StudentTimeTable>> output = [
    ...input.map(
        (subList) => [...subList.map((map) => StudentTimeTable.fromMap(map))])
  ];

  output.forEach(print);
  // [StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40), StudentTimeTable(courseName = IDP - Industrial Design Project phase II, credit = 4, hours = 40)]
  // [StudentTimeTable(courseName = Data Base Management System, credit = 4, hours = 40), StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40)]
}
它返回一个列表,其中包含从
subList.map
返回的迭代器中的元素。此
map
的目的是将
map
转换为
studentchedule

这是通过调用我们的新构造函数来完成的,该构造函数采用
映射


像这样的东西可以达到目的:

class StudentTimeTable {
  final String courseName;
  final String credit;
  final String hours;

  StudentTimeTable.fromMap(Map<String, String> map)
      : courseName = map['course_name'],
        credit = map['credit'],
        hours = map['hours'];

  @override
  String toString() =>
      'StudentTimeTable(courseName = $courseName, credit = $credit, hours = $hours)';
}

void main() {
  List<List<Map<String, String>>> input = [
    [
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "IDP - Industrial Design Project phase II",
        "credit": "4",
        "hours": "40",
      }
    ],
    [
      {
        "course_name": "Data Base Management System",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
    ],
  ];

  List<List<StudentTimeTable>> output = [
    ...input.map(
        (subList) => [...subList.map((map) => StudentTimeTable.fromMap(map))])
  ];

  output.forEach(print);
  // [StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40), StudentTimeTable(courseName = IDP - Industrial Design Project phase II, credit = 4, hours = 40)]
  // [StudentTimeTable(courseName = Data Base Management System, credit = 4, hours = 40), StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40)]
}
它返回一个列表,其中包含从
subList.map
返回的迭代器中的元素。此
map
的目的是将
map
转换为
studentchedule

这是通过调用我们的新构造函数来完成的,该构造函数采用
映射


我只需要列表中的输出,这将帮助我实现这一点。输出已经是那种类型。我只是用foreach更容易打印。谢谢你,我的朋友,这真是一个魔术,效果很好。你能解释一下这是如何工作的吗?添加了一些解释。现在如何使用共享首选项保存和获取此列表?我只需要列表中的输出,这将帮助我实现这一点。输出已经是那种类型了。我只是用foreach更容易打印。谢谢你,我的朋友,这真是一个魔术,效果很好。你能解释一下这是如何工作的吗?添加了一些解释。现在如何使用共享首选项保存和获取此列表?
class StudentTimeTable {
  final String courseName;
  final String credit;
  final String hours;

  StudentTimeTable.fromMap(Map<String, String> map)
      : courseName = map['course_name'],
        credit = map['credit'],
        hours = map['hours'];

  @override
  String toString() =>
      'StudentTimeTable(courseName = $courseName, credit = $credit, hours = $hours)';
}

void main() {
  List<List<Map<String, String>>> input = [
    [
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "IDP - Industrial Design Project phase II",
        "credit": "4",
        "hours": "40",
      }
    ],
    [
      {
        "course_name": "Data Base Management System",
        "credit": "4",
        "hours": "40",
      },
      {
        "course_name": "Estimation & Quantity Surveying",
        "credit": "4",
        "hours": "40",
      },
    ],
  ];

  List<List<StudentTimeTable>> output = [
    ...input.map(
        (subList) => [...subList.map((map) => StudentTimeTable.fromMap(map))])
  ];

  output.forEach(print);
  // [StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40), StudentTimeTable(courseName = IDP - Industrial Design Project phase II, credit = 4, hours = 40)]
  // [StudentTimeTable(courseName = Data Base Management System, credit = 4, hours = 40), StudentTimeTable(courseName = Estimation & Quantity Surveying, credit = 4, hours = 40)]
}
List<List<StudentTimeTable>> output = [...input.map((subList) => ...)]
[...subList.map((map) => StudentTimeTable.fromMap(map))]
  StudentTimeTable.fromMap(Map<String, String> map)
      : courseName = map['course_name'],
        credit = map['credit'],
        hours = map['hours'];
  final output = <List<StudentTimeTable>>[];

  for (final sublist in input) {
    final studentTimeTableSubList = <StudentTimeTable>[];

    for (final map in sublist) {
      studentTimeTableSubList.add(StudentTimeTable.fromMap(map));
    }

    output.add(studentTimeTableSubList);
  }
  final output = [
    for (final sublist in input)
      [for (final map in sublist) StudentTimeTable.fromMap(map)]
  ];