使用 Hive typeadapter box 时如何放置数据使其不消失
How to put data so that it does not disappear when using Hive typeadapter box
我正在使用 typeadapter box,现在无法放入数据。
例如,当我创建一个“人”class,其中包含姓名、年龄和地址字段以及生成的适配器时,
在'Person box'的'id1'键中放入数据的方法如下。 (假设打开并拿到盒子)
put.box('id1', Person(name: 'john'));
或者像这样。
put.box('id2', Person(name: 'aa', age: 10));
但是,如果您执行上述操作,以前存储的年龄或地址值(在那些代码中不是保存的字段)似乎被删除了。就像没有 'merge'
的 Firestore 中的 'set' 方法
有没有办法像Firestore中的'update'方法一样,只更新'name'值,使'age'和'address'值不被删除?
我试图找到类似更新的任何方法
这是文档中的一个示例,说明如何仅更新此人的年龄。
var box = await Hive.openBox('myBox');
var person = Person()
..name = 'Dave'
..age = 22;
box.add(person);
print(box.getAt(0)); // Dave - 22
person.age = 30;
person.save();
print(box.getAt(0)) // Dave - 30
但在更新 Person
之前,您需要从框中对其进行初始化,然后进行更新。也许你用没有初始化年龄或其他的新数据更新 Person
。
我正在使用 typeadapter box,现在无法放入数据。
例如,当我创建一个“人”class,其中包含姓名、年龄和地址字段以及生成的适配器时,
在'Person box'的'id1'键中放入数据的方法如下。 (假设打开并拿到盒子)
put.box('id1', Person(name: 'john'));
或者像这样。
put.box('id2', Person(name: 'aa', age: 10));
但是,如果您执行上述操作,以前存储的年龄或地址值(在那些代码中不是保存的字段)似乎被删除了。就像没有 'merge'
的 Firestore 中的 'set' 方法有没有办法像Firestore中的'update'方法一样,只更新'name'值,使'age'和'address'值不被删除?
我试图找到类似更新的任何方法
这是文档中的一个示例,说明如何仅更新此人的年龄。
var box = await Hive.openBox('myBox');
var person = Person()
..name = 'Dave'
..age = 22;
box.add(person);
print(box.getAt(0)); // Dave - 22
person.age = 30;
person.save();
print(box.getAt(0)) // Dave - 30
但在更新 Person
之前,您需要从框中对其进行初始化,然后进行更新。也许你用没有初始化年龄或其他的新数据更新 Person
。