0

I have set an object created as an enum to a property of an immutable object created with 'freezed'. Additionally, I have created an object that extends the enum object. While I expected it to work without any issues, I cannot use the switch I created as an extension, possibly due to the impact of 'freezed' or the enum. Why can't I use the extended 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._();
}

An error occurs here (when it doesn't exist).

if(postObject.postStatus.isDeleted){
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
sub
  • 117
  • 1
  • 6

1 Answers1

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

bool get isDeleted => this == deleted;  // <= add
}
sub
  • 117
  • 1
  • 6