Skip to content
Snippets Groups Projects
theme_cubit.dart 851 B
Newer Older
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

part 'theme_state.dart';

class ThemeCubit extends HydratedCubit<ThemeModeState> {
  ThemeCubit() : super(const ThemeModeState());

  void getTheme(ThemeModeState state) {
    emit(state);
  }

  @override
  ThemeModeState? fromJson(Map<String, dynamic> json) {
    switch (json['themeMode']) {
      case 'ThemeMode.dark':
        return const ThemeModeState(themeMode: ThemeMode.dark);
      case 'ThemeMode.light':
        return const ThemeModeState(themeMode: ThemeMode.light);
      case 'ThemeMode.system':
      default:
        return const ThemeModeState(themeMode: ThemeMode.system);
    }
  }

  @override
  Map<String, String>? toJson(ThemeModeState state) {
    return <String, String>{'themeMode': state.themeMode.toString()};
  }
}