isar / isar/hive

When using a Map of Set, code generation for Adapters doesn't compile

Open
#569 2 comments 0 reactions 1 assignee Claimed by @simc View on GitHub
problem
Dominant language
Dart
Stars
4.4k
Forks
449
PR merge metrics
No merged PRs in 30d

Description

**Steps to Reproduce**
Use HiveType on class with field of type Map

**Code sample**
```dart
@HiveType(typeId: 0)
class Foo {
@HiveField(0)
Map> map;
}
```

Generates code that does not compile (because v is not a List) :
```dart
class FooAdapter extends TypeAdapter {
@override
final int typeId = 0;

@override
Foo read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = {
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Foo()
..map = (fields[0] as Map)?.map((dynamic k, dynamic v) =>
MapEntry(k as int, (v as List)?.cast()));
}

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

@override
int get hashCode => typeId.hashCode;

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

**Version**
- Platform: iOS, Android, Mac, Windows, Linux, Web
- Flutter version: 1.27.2.0.pre.96
- Hive versions
- hive: ^1.4.4+1
- hive_flutter: ^0.3.1
- hive_generator: ^0.8.2
- build_runner: ^1.11.5

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.