首页 > 解决方案 > 飞镖列表模型类无法显示

问题描述

这是我使用我的模型NoteBook从数据中解析的代码

final data = rows.map((result) {
  return NoteWithBook(
    note: result.readTable(notes),
    book: result.readTable(books),
  );
 }).toList();
print(data); // ouput [NoteWithBook]

模型类:

class NoteWithBook extends Equatable {
  final Note note;
  final Book book;

  NoteWithBook({
    @required this.note,
    @required this.book,
  });

  @override
  List<Object> get props => [note, book];
}

从代码结果/输出:

[NoteWithBook]

我的期望输出是:

[
NoteWithBook(
Note(id:...),
Book(id:...)
),

NoteWithBook(
Note(id:...),
Book(id:...)
),

NoteWithBook(
Note(id:...),
Book(id:...)
),
]

标签: flutterdart

解决方案


要使用 Equatable 库覆盖 toString() 方法,您必须将stringify标志设置为 true。默认情况下,stringify 标志为 false,这就是 toString 将仅返回返回类型的实例的原因。

所以你的 NoteWithBook 类应该是这样的:

class NoteWithBook extends Equatable {
  final Note note;
  final Book book;

  NoteWithBook({
    @required this.note,
    @required this.book,
  });

  @override
  List<Object> get props => [note, book];

  @override
  bool get stringify => true;
}

推荐阅读