如何在Flutter Objectbox中正确使用putMany()批量插入对象?
Flutter Objectbox putMany() 批量插入问题解决
正确使用示例
确保已正确初始化Objectbox Store后,按以下方式调用putMany():
// 获取Careers对应的Box实例 final careersBox = store.box<Careers>(); // 构造批量插入的对象列表 final List<Careers> batchData = [ Careers( serialNumber: 1, careerCode: "DEV001", careerNewName: "前端开发工程师", careerOldName: "网页开发工程师", ), Careers( serialNumber: 2, careerCode: "TEST001", careerNewName: "自动化测试工程师", careerOldName: "软件测试工程师", ), // 更多对象... ]; // 执行批量插入 try { List<int> insertedIds = careersBox.putMany(batchData); print("批量插入成功,返回ID列表: $insertedIds"); } catch (e) { print("批量插入失败: $e"); }
常见报错原因及修复
未生成Objectbox代码文件
修改实体类后,必须执行flutter pub run build_runner build命令,生成objectbox.g.dart及实体适配器,否则Objectbox无法识别你的实体类,调用putMany()会报错。对象参数不完整
检查列表中每个Careers对象的必填参数(serialNumber、careerCode等)是否都已正确赋值,避免传入null或未初始化的值(构造函数标记为required,若传入空值会触发断言错误)。Store未正确初始化
确认在调用putMany()前,Objectbox Store已经完成初始化,且未被关闭。如果Store处于未就绪状态,所有数据库操作都会失败。ID冲突(非插入场景)
若手动给Careers的id字段赋值为数据库中已存在的ID,putMany()会执行更新操作。如果更新时出现数据约束冲突(比如唯一键重复),也会抛出错误。保持id为默认的0即可实现纯插入。
内容的提问来源于stack exchange,提问作者Hani Labib
相关产品推荐
相关产品推荐

