我正在开发一个带有flutter和hive本地nosql数据库的应用程序。
我创建了一个包含另一个配置单元对象列表的配置单元对象。
这是第一个对象:
@HiveType(typeId: 0)
class FirstObject extends HiveObject {
@HiveField(0)
late String string;
@HiveField(1)
late DateTime dateTime;
@HiveField(2)
late List<SecondObject> secondObject = [];
}
这是第二个对象:
@HiveType(typeId: 1)
class SecondObject extends HiveObject {
@HiveField(0)
late String something;
@HiveField(1)
bool boolean = false;
@HiveField(2)
late DateTime? date;
}
我为这两个对象都生成了适配器并注册了它们,但我只为包含第二个对象的第一个对象生成了一个框。
然后,在第一个对象中创建一个代表列表的列表变量,并创建一个列表视图生成器,该生成器具有带有复选框的列表瓦片,该复选框更新第二个对象中的布尔值,然后保存它。
但当我测试它时,它会给我一个错误,说:
The following HiveError was thrown while handling a gesture:
This object is currently not in a box.
我尝试了一些解决方案,比如为第二个对象制作另一个框,并在第二个包含第一个对象的对象中声明一个变量。但这些解决方案给了我其他错误。
这个问题的最佳解决方案是什么?
现在我意识到我可以保存第一个容器对象,而不仅仅是第二个对象。