【发布时间】:2021-04-27 08:41:42
【问题描述】:
我试图了解在 Hive TypeAdapter 的 write 方法中使用 writeByte(3) 背后的原因。
请考虑课程:
@HiveType()
class Person{
@HiveField(0)
String name;
@HiveField(1)
int age;
}
在下面的TypeAdapter 中read 方法很容易理解,因为它只是顺序读取每个字段。
但是,我试图弄清楚为什么相同的机制不适用于write,而不是在每个字段之前使用..writeByte(...)。还有,第一个..writeByte(2)是什么意思?
class PersonAdapter extends TypeAdapter<Person> {
@override
Person read(BinaryReader reader) {
var numOfFields = reader.readByte();
var fields = <int, dynamic>{
for (var i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Trips()
..name = fields[0] as String
..age = fields[1] as int;
}
@override
void write(BinaryWriter writer, Person obj) {
writer
..writeByte(2) // Why this here? (sometimes I see writeByte(3) !! )
..writeByte(0)
..write(obj.name)
..writeByte(1)
..write(obj.age);
}
}
感谢您的澄清。
【问题讨论】:
标签: dart flutter-hive