Isar嵌入对象加载异常:加载父对象时嵌入列表为空
解决Isar数据库嵌入对象列表加载为空的问题
问题核心是嵌入对象列表需要显式添加@Embedded注解,Isar对单个嵌入对象会自动处理,但列表这类集合型嵌入对象必须标记注解才能正确加载。
修复步骤:
- 修改Email类的recipients字段,添加
@Embedded()注解:
@collection class Email { Id? id; String? title; @Embedded() List<Recepient> recipients = List.empty(growable: true); } @embedded class Recepient { String? name; String? address; }
- 重新生成Isar代码适配器:
运行终端命令:
dart run build_runner build
- 重新测试加载逻辑,此时recipients列表就能正常读取到存储的嵌入对象了。
原因说明:
Isar Inspector能看到完整数据,是因为存储时Isar可识别嵌入对象结构并写入,但加载时如果列表字段没加@Embedded注解,Isar不会自动解析这个集合类型的嵌入数据,最终导致列表为空。
内容的提问来源于stack exchange,提问作者Nicola Loro
相关产品推荐
相关产品推荐

