import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:momomotus/config/default_activity_settings.dart'; import 'package:momomotus/models/settings/settings_activity.dart'; part 'settings_activity_state.dart'; class ActivitySettingsCubit extends HydratedCubit<ActivitySettingsState> { ActivitySettingsCubit() : super(ActivitySettingsState(settings: ActivitySettings.createDefault())); void setValues({ String? lang, String? length, String? level, }) { emit( ActivitySettingsState( settings: ActivitySettings( lang: lang ?? state.settings.lang, length: length ?? state.settings.length, level: level ?? state.settings.level, ), ), ); } String getParameterValue(String code) { switch (code) { case DefaultActivitySettings.parameterCodeLang: return ActivitySettings.getLangValueFromUnsafe(state.settings.lang); case DefaultActivitySettings.parameterCodeLength: return ActivitySettings.getLengthValueFromUnsafe(state.settings.length); case DefaultActivitySettings.parameterCodeLevel: return ActivitySettings.getLevelValueFromUnsafe(state.settings.level); } return ''; } void setParameterValue(String code, String value) { final String lang = code == DefaultActivitySettings.parameterCodeLang ? value : getParameterValue(DefaultActivitySettings.parameterCodeLang); final String length = code == DefaultActivitySettings.parameterCodeLength ? value : getParameterValue(DefaultActivitySettings.parameterCodeLength); final String level = code == DefaultActivitySettings.parameterCodeLevel ? value : getParameterValue(DefaultActivitySettings.parameterCodeLevel); setValues( lang: lang, length: length, level: level, ); } @override ActivitySettingsState? fromJson(Map<String, dynamic> json) { final String lang = json[DefaultActivitySettings.parameterCodeLang] as String; final String length = json[DefaultActivitySettings.parameterCodeLength] as String; final String level = json[DefaultActivitySettings.parameterCodeLevel] as String; return ActivitySettingsState( settings: ActivitySettings( lang: lang, length: length, level: level, ), ); } @override Map<String, dynamic>? toJson(ActivitySettingsState state) { return <String, dynamic>{ DefaultActivitySettings.parameterCodeLang: state.settings.lang, DefaultActivitySettings.parameterCodeLength: state.settings.length, DefaultActivitySettings.parameterCodeLevel: state.settings.level, }; } }