Select Git revision
settings_global_cubit.dart
settings_global_cubit.dart 2.30 KiB
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,
};
}