Получатель не определен для класса «Карта <>» Получатель списка для Карты - PullRequest
1 голос
/ 25 апреля 2020
    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;
  }
}

Здравствуйте, у меня есть класс, как показано выше. У меня есть карта, и я хочу сделать из нее список. Поэтому я создал геттер, но он не работает, потому что, когда я пытаюсь print(courses.list);, я получаю ошибку

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

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

Вы не можете инициализировать список.

Измените следующую строку:

List<CourseData> list;

со следующей:

List<CourseData> list = [];
1 голос
/ 25 апреля 2020

Ошибка в том, что вы, скорее всего, пытаетесь получить список непосредственно из класса, а не из экземпляра класса, поэтому установка getti stati c решит вашу проблему (также лучше будет stati c поскольку он уже имеет доступ только к значениям c)

, вы также ошиблись, если забыли инициализировать список

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}';
  }
}
...