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

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

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

// Package imports:
import 'package:hive/hive.dart';

part 'post_status.g.dart';

@HiveType(typeId: 10, adapterName: 'PostStatusAdapter')
enum PostStatus {
  @HiveField(0)
  deleted,
  @HiveField(1)
  active,
}

extension IsDeletedPostStatus on PostStatus {
  bool get isDeleted => switch (this) {
        PostStatus.deleted => true,
        PostStatus.active => false,
      };
}
part 'post_object.freezed.dart';
part 'post_object.g.dart';

@freezed
class PostObject with _$PostObject {
  @HiveType(typeId: 1, adapterName: 'PostObjectAdapter')
  const factory PostObject({
    @HiveField(0) required String? text,
    @HiveField(1) required PostStatus? postStatus,
  }) = _PostObject;
  const PostObject._();
}

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

if(postObject.postStatus.isDeleted){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
hgb9j2n6

hgb9j2n61#

@HiveType(typeId: 10, adapterName: 'PostStatusAdapter')
enum PostStatus {
  @HiveField(0)
  deleted,
  @HiveField(1)
  active;

bool get isDeleted => this == deleted;  // <= add
}

相关问题