如何在我的盒子中存储地图类型?我使用 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));
}
}
我无法在我的框中保存地图类型,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));
}
}