#flutter #dart #objectbox #flutter-objectbox
Вопрос:
Я не могу сохранить тип карты в своем поле, songInfo
атрибуты
@Entity()
class PlaylistItem {
int id = 0;
int recentIndex;
Map<String, Object> songInfo;
PlaylistItem({
this.recentIndex = 0,
this.songInfo = const <String, Object>{} ,
});
}
Когда я бегу: flutter pub run build_runner build
он игнорирует songInfo
предупреждение : skipping property 'songInfo' in entity 'PlaylistItem', as it has an unsupported type: 'Map<String, Object>'
Почему Map является неподдерживаемым типом? Как мне сохранить карту? пожалуйста, мне нужна помощь (с примером будет приветствоваться)
Ответ №1:
Вам нужно будет создать пользовательский конвертер, как показано здесь https://docs.objectbox.io/advanced/custom-types
Вашим лучшим выбором, вероятно, было бы преобразовать его в json и сохранить его в виде строки. Непроверено, но вам понадобится что-то вроде следующего. Хотя объектная часть вашей карты делает ее немного сложнее, вам также придется написать способ сериализации объекта в json/string
String? get dbSaveSongInfo=>
songInfo== null ? null : json.encode(songInfo);
set dbSaveSongInfo(String? value) {
if (value == null) {
songInfo= null;
} else {
songInfo= Map.from(
json.decode(value).map((k, v) => MapEntry(k as String, v(handle your 2nd conversion here));
}
}