Skip to content
Snippets Groups Projects
settings_global_cubit.dart 1.51 KiB
Newer Older
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:reversi/config/default_global_settings.dart';
import 'package:reversi/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,
  }) {
    emit(
      GlobalSettingsState(
        settings: GlobalSettings(
          skin: skin ?? state.settings.skin,
        ),
      ),
    );
  }

  String getParameterValue(String code) {
    switch (code) {
      case DefaultGlobalSettings.parameterCodeSkin:
        return GlobalSettings.getSkinValueFromUnsafe(state.settings.skin);
    }
    return '';
  }

  void setParameterValue(String code, String value) {
    final String skin = (code == DefaultGlobalSettings.parameterCodeSkin)
        ? value
        : getParameterValue(DefaultGlobalSettings.parameterCodeSkin);

    setValues(
      skin: skin,
    );
  }

  @override
  GlobalSettingsState? fromJson(Map<String, dynamic> json) {
    final String skin = json[DefaultGlobalSettings.parameterCodeSkin] as String;

    return GlobalSettingsState(
      settings: GlobalSettings(
        skin: skin,
      ),
    );
  }

  @override
  Map<String, dynamic>? toJson(GlobalSettingsState state) {
    return <String, dynamic>{
      DefaultGlobalSettings.parameterCodeSkin: state.settings.skin,
    };
  }
}