Select Git revision
activity_cubit.dart
-
Benoît Harrault authoredBenoît Harrault authored
settings_game_cubit.dart 2.20 KiB
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:hydrated_bloc/hydrated_bloc.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,
};