冷冻和Hive合并

cngwdvgl  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(348)

我正在寻找一个解决方案,结合冷冻和Hive包。例如:

  1. @freezed
  2. abstract class Person extends HiveObject with _$Person {
  3. @HiveType(typeId: 0)
  4. factory Person({@HiveField(0) String name, @HiveField(1) int age}) = _Person;
  5. }

我知道这是不可能的开箱即用,但我想你知道我想要实现什么。。用Hive冷冻的最好方法是什么?
我目前能想到的唯一解决方案是存储json字符串,它是由冻结在hive中生成的。。但我希望有更好的解决办法
提前谢谢!祝你有美好的一天!丹尼斯

oyjwcjzk

oyjwcjzk1#

是的,现在可以了,请确保您的min版本是 hive_generator: ^0.7.2+1 .
例如,你可以写:

  1. import 'package:freezed_annotation/freezed_annotation.dart';
  2. import 'package:hive/hive.dart';
  3. part 'immutable_class.freezed.dart';
  4. part 'immutable_class.g.dart';
  5. @freezed
  6. abstract class ImmutableClass with _$ImmutableClass {
  7. @HiveType(typeId: 5, adapterName: 'ImmutableClassAdapter')
  8. const factory ImmutableClass({
  9. @JsonKey(name: 'id', required: true, disallowNullValue: true) @HiveField(0) int id,
  10. @HiveField(1) int someField1,
  11. @HiveField(2) String someField2,
  12. }) = _ImmutableClass;
  13. factory ImmutableClass.fromJson(Map<String, dynamic> json) => _$ImmutableClassFromJson(json);
  14. }

唯一的缺点是您应该指定适配器的名称。

展开查看全部

相关问题