import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:jeweled/config/default_global_settings.dart'; import 'package:jeweled/models/settings/settings_global.dart'; part 'settings_global_state.dart'; class GlobalSettingsCubit extends HydratedCubit<GlobalSettingsState> { GlobalSettingsCubit() : super(GlobalSettingsState(settings: GlobalSettings.createDefault())); void setValues({ String? colorsTheme, String? graphicTheme, }) { emit( GlobalSettingsState( settings: GlobalSettings( colorsTheme: colorsTheme ?? state.settings.colorsTheme, graphicTheme: graphicTheme ?? state.settings.graphicTheme, ), ), ); } String getParameterValue(String code) { switch (code) { case DefaultGlobalSettings.parameterCodeColorsTheme: return GlobalSettings.getColorsThemeValueFromUnsafe(state.settings.colorsTheme); case DefaultGlobalSettings.parameterCodeGraphicsTheme: return GlobalSettings.getGraphicThemeValueFromUnsafe(state.settings.graphicTheme); } return ''; } void setParameterValue(String code, String value) { final String colorsTheme = code == DefaultGlobalSettings.parameterCodeColorsTheme ? value : getParameterValue(DefaultGlobalSettings.parameterCodeColorsTheme); final String graphicTheme = code == DefaultGlobalSettings.parameterCodeGraphicsTheme ? value : getParameterValue(DefaultGlobalSettings.parameterCodeGraphicsTheme); setValues( colorsTheme: colorsTheme, graphicTheme: graphicTheme, ); } @override GlobalSettingsState? fromJson(Map<String, dynamic> json) { final String colorsTheme = json[DefaultGlobalSettings.parameterCodeColorsTheme] as String; final String graphicTheme = json[DefaultGlobalSettings.parameterCodeGraphicsTheme] as String; return GlobalSettingsState( settings: GlobalSettings( colorsTheme: colorsTheme, graphicTheme: graphicTheme, ), ); } @override Map<String, dynamic>? toJson(GlobalSettingsState state) { return <String, dynamic>{ DefaultGlobalSettings.parameterCodeColorsTheme: state.settings.colorsTheme, DefaultGlobalSettings.parameterCodeGraphicsTheme: state.settings.graphicTheme, }; } }