Select Git revision
pubspec.lock
-
Benoît Harrault authoredBenoît Harrault authored
settings_activity_cubit.dart 2.18 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:minehunter/config/default_activity_settings.dart';
import 'package:minehunter/models/settings/settings_activity.dart';
part 'settings_activity_state.dart';
class ActivitySettingsCubit extends HydratedCubit<ActivitySettingsState> {
ActivitySettingsCubit()
: super(ActivitySettingsState(settings: ActivitySettings.createDefault()));
void setValues({
String? itemsCount,
String? timerValue,
}) {
emit(
ActivitySettingsState(
settings: ActivitySettings(
level: itemsCount ?? state.settings.level,
size: timerValue ?? state.settings.size,
),
),
);
}
String getParameterValue(String code) {
switch (code) {
case DefaultActivitySettings.parameterCodeLevel:
return ActivitySettings.getLevelValueFromUnsafe(state.settings.level);
case DefaultActivitySettings.parameterCodeSize:
return ActivitySettings.getSizeValueFromUnsafe(state.settings.size);
}
return '';
}
void setParameterValue(String code, String value) {
final String itemsCount = code == DefaultActivitySettings.parameterCodeLevel
? value
: getParameterValue(DefaultActivitySettings.parameterCodeLevel);
final String timerValue = code == DefaultActivitySettings.parameterCodeSize
? value
: getParameterValue(DefaultActivitySettings.parameterCodeSize);
setValues(
itemsCount: itemsCount,
timerValue: timerValue,
);
}
@override
ActivitySettingsState? fromJson(Map<String, dynamic> json) {
final String itemsCount = json[DefaultActivitySettings.parameterCodeLevel] as String;
final String timerValue = json[DefaultActivitySettings.parameterCodeSize] as String;
return ActivitySettingsState(
settings: ActivitySettings(
level: itemsCount,
size: timerValue,
),
);
}
@override
Map<String, dynamic>? toJson(ActivitySettingsState state) {
return <String, dynamic>{
DefaultActivitySettings.parameterCodeLevel: state.settings.level,
DefaultActivitySettings.parameterCodeSize: state.settings.size,
};
}
}