getter 没有为地图的 class 'Map<>' 列表 getter 定义

The getter isn't defined for the class 'Map<>' List getter for a Map

    import 'package:meta/meta.dart';

enum Course {
  math,
  english,
}

class CourseData {
  const CourseData({@required this.courseName, @required this.schoolCourse});

  final String courseName;
  final bool schoolCourse;

  static const Map<Course, CourseData> allCourses = {
    Course.math: CourseData(courseName: 'math', schoolCourse: true),
    Course.english: CourseData(courseName: 'english', schoolCourse: true),
  };

  List<CourseData> get list {
    List<CourseData> list;
    allCourses.forEach((k, v) => list.add(v));
    return list;
  }
}

您好,我有一个class如上图。我有一张地图,我想从中创建一个列表。所以我创建了一个 getter 但它不起作用,因为当我尝试 print(courses.list); 我得到一个错误

"The getter 'list' isn't defined for the class 'Map<Course, CourseData>'."

您缺少初始化列表。

更改以下行:

List<CourseData> list;

与以下一个:

List<CourseData> list = [];

错误是因为您很可能试图直接从 class 而不是从 class 的实例获取列表,因此使 getter 静态将解决你的问题(最好是静态的,因为它已经只能访问静态值)

另外,你有一个错误是你忘记初始化列表

enum Course {
  math,
  english,
}

class CourseData {
  const CourseData({@required this.courseName, @required this.schoolCourse});

  final String courseName;
  final bool schoolCourse;

  static const Map<Course, CourseData> allCourses = {
    Course.math: CourseData(courseName: 'math', schoolCourse: true),
    Course.english: CourseData(courseName: 'english', schoolCourse: true),
  };

  static List<CourseData> get list {
    List<CourseData> list = List<CourseData>();
    allCourses.forEach((k, v) => list.add(v));
    return list;
  }

  @override
  String toString() {
    return 'CourseData{courseName: $courseName, schoolCourse: $schoolCourse}';
  }
}