Reputation: 1002
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
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