0

我无法将地图类型保存在我的框中,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 是不受支持的类型?如何存储地图?请我需要帮助(欢迎举个例子

4

1 回答 1

2

您需要创建一个自定义转换器,如此处所示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));
    }
  }

于 2021-10-01T05:00:30.023 回答