hive 我想将枚举设置为'freezed'的属性并使用扩展getter,但我无法使用它

w8f9ii69  于 2023-10-18  发布在  Hive
关注(0)|答案(1)|浏览(182)

我已经将一个作为枚举创建的对象设置为用'freezed'创建的不可变对象的属性。此外,我还创建了一个扩展枚举对象的对象。虽然我希望它能正常工作,但我不能使用我创建的开关作为扩展,可能是由于'freezed'或枚举的影响。为什么我不能使用扩展getter?

  1. // Package imports:
  2. import 'package:hive/hive.dart';
  3. part 'post_status.g.dart';
  4. @HiveType(typeId: 10, adapterName: 'PostStatusAdapter')
  5. enum PostStatus {
  6. @HiveField(0)
  7. deleted,
  8. @HiveField(1)
  9. active,
  10. }
  11. extension IsDeletedPostStatus on PostStatus {
  12. bool get isDeleted => switch (this) {
  13. PostStatus.deleted => true,
  14. PostStatus.active => false,
  15. };
  16. }
  1. part 'post_object.freezed.dart';
  2. part 'post_object.g.dart';
  3. @freezed
  4. class PostObject with _$PostObject {
  5. @HiveType(typeId: 1, adapterName: 'PostObjectAdapter')
  6. const factory PostObject({
  7. @HiveField(0) required String? text,
  8. @HiveField(1) required PostStatus? postStatus,
  9. }) = _PostObject;
  10. const PostObject._();
  11. }

这里发生错误(当它不存在时)。

  1. if(postObject.postStatus.isDeleted){
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3. }
hgb9j2n6

hgb9j2n61#

  1. @HiveType(typeId: 10, adapterName: 'PostStatusAdapter')
  2. enum PostStatus {
  3. @HiveField(0)
  4. deleted,
  5. @HiveField(1)
  6. active;
  7. bool get isDeleted => this == deleted; // <= add
  8. }

相关问题