У меня есть представление фильма, который я храню в базе данных SQLite. Он состоит из идентификатора и списка жанров.
Жанр состоит из идентификатора и имени.
У меня возникли проблемы с десериализацией списка жанров после того, как пришлось сгладить иерархию досохранить его как строку в базе данных.
Список жанров в базе данных выглядит следующим образом:
[{id: 1, name: Comedy}, {id: 2, name: Drama}]
Как десериализовать строку базы данных в объект моего класса Movie?
class Genre {
int id;
String name;
Genre({this.id, this.name});
factory Genre.fromMap(Map<String, dynamic> map) => Genre(
id: map["id"],
name: map["name"],
);
Map<String, dynamic> toMap() => {
"id": id,
"name": name,
};
}
class Movie {
int id;
List<Genre> genres;
Movie({this.id, this.genres});
factory SqLiteMovie.fromMap(Map<String, dynamic> map) => SqLiteMovie(
id: map["id"],
genres: List<Genre>.from(map["genres"].map((x) => Genre.fromMap(x))), // offending line
);
Map<String, dynamic> toMap() => {
"id": id,
"genres": List<dynamic>.from(genres.map((x) => x.toMap())).toString(), // need toString to store in db
};
}