zex_rectooor
zex_rectooor

Reputation: 1002

hydrated cubit doesn't store state

In the following cubit, I tried to persist the state of the navigation of the application but when killing the app on the device and returning to the program it returns to the default state. How can I solve the problem?

My cubit is:

class NavigationCubit extends HydratedCubit<NavigationState> {
  NavigationCubit() : super(NavigationState.empty);


  @override
  NavigationState fromJson(Map<String, dynamic> json) =>
      NavigationState.fromJson(json);

  @override
  Map<String, dynamic> toJson(NavigationState state) => state.toJson();
}

State code is:

@JsonSerializable()
class NavigationState {
  final PagesTitle currentPage;
  final PagesTitle targetPage;

  const NavigationState({required this.currentPage, required this.targetPage});

  Map<String, dynamic> toJson() => _$NavigationStateToJson(this);

  factory NavigationState.fromJson(Map<String, dynamic> json) =>
      _$NavigationStateFromJson(json);

  static const NavigationState empty = NavigationState(
    currentPage: PagesTitle.dashboard,
    targetPage: PagesTitle.unknown,
  );

}

enum PagesTitle { chart, payout, dashboard, profile, setting, unknown }

Upvotes: 1

Views: 606

Answers (1)

harsha.kuruwita
harsha.kuruwita

Reputation: 1331

Try to use HydratedMixin instead of HydratedCubit

class NavigationCubit extends Cubit< NavigationState> with HydratedMixin {
  NavigationCubit() : super(Navigationitial());

  void setNavigationState({required UserData userData}) {
    emit( NavigationState(userData: userData.toJson()));
  }

  @override
  NavigationState? fromJson(Map<String, dynamic> json) {
    return NavigationState.fromMap(json);
  }

  @override
  Map<String, dynamic>? toJson(NavigationState state) {
    return state.toMap();
  }
}

Upvotes: 0

Related Questions