如何在我的盒子中存储地图类型?我使用 Flutter 对象框

how can I store a Map type in my box ? I use 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 是不受支持的类型?我如何存储地图?我需要帮助(欢迎举个例子

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