When using a Map of Set, code generation for Adapters doesn't compile
- 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.