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