Map<>类没有定义getter。

问题描述 投票:0回答:1
    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>'."

list dictionary flutter dart getter
1个回答
1
投票

这个错误是因为你很可能是想直接从类中获取列表,而不是从类的实例中获取,所以将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}';
  }
}

2
投票

你缺少初始化列表。

更改下面一行。

List<CourseData> list;

改成下面的一行。

List<CourseData> list = [];
© www.soinside.com 2019 - 2024. All rights reserved.