没有为类 'Map<>' 定义 getter 为 Map 列出 getter

Posted

技术标签:

【中文标题】没有为类 \'Map<>\' 定义 getter 为 Map 列出 getter【英文标题】:The getter isn't defined for the class 'Map<>' List getter for a Map没有为类 'Map<>' 定义 getter 为 Map 列出 getter 【发布时间】:2020-08-08 22:52:50 【问题描述】:
    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&lt;Course, CourseData&gt;'.

【问题讨论】:

你能在打印列表的地方显示代码吗 【参考方案1】:

您缺少初始化列表。

更改以下行:

List<CourseData> list;

以下:

List<CourseData> list = [];

【讨论】:

【参考方案2】:

错误是因为您很可能试图直接从类而不是从类的实例中获取列表,因此将 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 'CourseDatacourseName: $courseName, schoolCourse: $schoolCourse';
  

【讨论】:

以上是关于没有为类 'Map<>' 定义 getter 为 Map 列出 getter的主要内容,如果未能解决你的问题,请参考以下文章

没有为类“对象”定义运算符“[]”。扑

C ++ typedef函数定义为类成员,以后用于函数指针?

将函数模板定义为类模板的回调

没有为类型 'QuerySnapshot<Map<String, dynamic>>' 定义 getter 'documents'

将属性类型设置为类的类型

如何把一个Map<String, Object> 集合转换为一个对象, 在用get方法获取取他的值. 谢谢急