import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:jeweled/models/settings_global.dart'; import 'package:jeweled/utils/tools.dart'; part 'settings_global_state.dart'; class GlobalSettingsCubit extends HydratedCubit<GlobalSettingsState> { GlobalSettingsCubit() : super(GlobalSettingsState(settings: GlobalSettings.createDefault())); void setValues({ int? colorsTheme, int? graphicTheme, }) { emit( GlobalSettingsState( settings: GlobalSettings( colorsTheme: colorsTheme ?? state.settings.colorsTheme, graphicTheme: graphicTheme ?? state.settings.graphicTheme, ), ), ); } int getParameterValue(String code) { switch (code) { case 'colorsTheme': return GlobalSettings.getColorsThemeValueFromUnsafe(state.settings.colorsTheme); case 'graphicTheme': return GlobalSettings.getGraphicThemeValueFromUnsafe(state.settings.graphicTheme); } return 0; } void setParameterValue(String code, int value) { printlog('GlobalSettingsCubit.setParameterValue'); printlog('code: $code / value: $value'); int colorsTheme = code == 'colorsTheme' ? value : getParameterValue('colorsTheme'); int graphicTheme = code == 'graphicTheme' ? value : getParameterValue('graphicTheme'); setValues( colorsTheme: colorsTheme, graphicTheme: graphicTheme, ); } @override GlobalSettingsState? fromJson(Map<String, dynamic> json) { int colorsTheme = json['colorsTheme'] as int; int graphicTheme = json['graphicTheme'] as int; return GlobalSettingsState( settings: GlobalSettings( colorsTheme: colorsTheme, graphicTheme: graphicTheme, ), ); } @override Map<String, dynamic>? toJson(GlobalSettingsState state) { return <String, dynamic>{ 'colorsTheme': state.settings.colorsTheme, 'graphicTheme': state.settings.graphicTheme, }; } }