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;
}
}
你好,我有一个类,如上图所示。我有一个地图,我想从它做一个列表。所以,我创建了一个getter,但它不工作,因为当我试图去 print(courses.list);
我得到一个错误
"The getter 'list' isn't defined for the class 'Map<Course, CourseData>'.
"
这个错误是因为你很可能是想直接从类中获取列表,而不是从类的实例中获取,所以将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}';
}
}
你缺少初始化列表。
更改下面一行。
List<CourseData> list;
改成下面的一行。
List<CourseData> list = [];