hive icon indicating copy to clipboard operation
hive copied to clipboard

Wrong generator result for empty classes

Open maeddin opened this issue 3 years ago • 1 comments

Steps to Reproduce Create an empty class with the HiveType annotation.

@HiveType(typeId: 0)
class EmptyClass {}

Start the generator. The result is:

class EmptyClassAdapter extends TypeAdapter<EmptyClass> {
  @override
  final int typeId = 58;

  @override
  EmptyClass read(BinaryReader reader) {
    return EmptyClass();
  }

  @override
  void write(BinaryWriter writer, EmptyClass obj) {
    writer.writeByte(0);
  }

  @override
  int get hashCode => typeId.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is EmptyClassAdapter &&
          runtimeType == other.runtimeType &&
          typeId == other.typeId;
}

But the correct result should be:

class EmptyClassAdapter extends TypeAdapter<EmptyClass> {
  @override
  final int typeId = 58;

  @override
  EmptyClass read(BinaryReader reader) {
    final numOfFields = reader.readByte();
    final fields = <int, dynamic>{
      for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
    };
    return EmptyClass();
  }

  @override
  void write(BinaryWriter writer, EmptyClass obj) {
    writer.writeByte(0);
  }

  @override
  int get hashCode => typeId.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is EmptyClassAdapter &&
          runtimeType == other.runtimeType &&
          typeId == other.typeId;
}

Version

  • Platform: -
  • Flutter version: 3.3.2
  • Hive version: 2.2.3
  • Hive generator version: 1.1.3

maeddin avatar Sep 26 '22 11:09 maeddin

Are there any updates on this? I'm facing the same issue on the latest versions.

astubenbord avatar Oct 06 '23 19:10 astubenbord