import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:sortgame/config/default_game_settings.dart'; import 'package:sortgame/models/settings/settings_game.dart'; part 'settings_game_state.dart'; class GameSettingsCubit extends HydratedCubit<GameSettingsState> { GameSettingsCubit() : super(GameSettingsState(settings: GameSettings.createDefault())); void setValues({ String? itemsCount, String? themeCode, }) { emit( GameSettingsState( settings: GameSettings( itemsCount: itemsCount ?? state.settings.itemsCount, themeCode: themeCode ?? state.settings.themeCode, ), ), ); } String getParameterValue(String code) { switch (code) { case DefaultGameSettings.parameterCodeItemsCount: return GameSettings.getItemsCountValueFromUnsafe(state.settings.itemsCount); case DefaultGameSettings.parameterCodeThemeCode: return GameSettings.getThemeValueFromUnsafe(state.settings.themeCode); } return ''; } void setParameterValue(String code, String value) { final String itemsCount = code == DefaultGameSettings.parameterCodeItemsCount ? value : getParameterValue(DefaultGameSettings.parameterCodeItemsCount); final String themeCode = code == DefaultGameSettings.parameterCodeThemeCode ? value : getParameterValue(DefaultGameSettings.parameterCodeThemeCode); setValues( itemsCount: itemsCount, themeCode: themeCode, ); } @override GameSettingsState? fromJson(Map<String, dynamic> json) { final String itemsCount = json[DefaultGameSettings.parameterCodeItemsCount] as String; final String themeCode = json[DefaultGameSettings.parameterCodeThemeCode] as String; return GameSettingsState( settings: GameSettings( itemsCount: itemsCount, themeCode: themeCode, ), ); } @override Map<String, dynamic>? toJson(GameSettingsState state) { return <String, dynamic>{ DefaultGameSettings.parameterCodeItemsCount: state.settings.itemsCount, DefaultGameSettings.parameterCodeThemeCode: state.settings.themeCode, }; } }