|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:mobx/mobx.dart';
|
|
|
|
import '../utils/shared_pref.dart';
|
|
|
|
|
|
|
|
part 'app_store.g.dart';
|
|
|
|
|
|
|
|
AppStore appStore = AppStore();
|
|
|
|
|
|
|
|
class AppStore = AppStoreBase with _$AppStore;
|
|
|
|
|
|
|
|
const String themeModePref = 'themeModePref';
|
|
|
|
const String colorSchemeIndexPref = 'colorSchemeIndexPref';
|
|
|
|
const String isSoundOnPref = 'isSoundOnPref';
|
|
|
|
const String isVibrationOnPref = 'isVibrationOnPref';
|
|
|
|
const String languagePref = 'languagePref';
|
|
|
|
|
|
|
|
abstract class AppStoreBase with Store {
|
|
|
|
@observable
|
|
|
|
ThemeMode themeMode = ThemeMode.system;
|
|
|
|
|
|
|
|
@observable
|
|
|
|
int colorSchemeIndex = 4;
|
|
|
|
|
|
|
|
@observable
|
|
|
|
bool isSoundOn = true;
|
|
|
|
|
|
|
|
@observable
|
|
|
|
bool isVibrationOn = true;
|
|
|
|
|
|
|
|
@observable
|
|
|
|
String selectedLanguage = 'en_US';
|
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> setThemeMode(ThemeMode value) async {
|
|
|
|
themeMode = value;
|
|
|
|
setPrefValue(themeModePref, themeMode.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> setColorSchemeIndex(int value) async {
|
|
|
|
colorSchemeIndex = value;
|
|
|
|
await setPrefValue(colorSchemeIndexPref, colorSchemeIndex);
|
|
|
|
}
|
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> toggleSoundMode({bool? value}) async {
|
|
|
|
isSoundOn = value ?? !isSoundOn;
|
|
|
|
setPrefValue(isSoundOnPref, isSoundOn);
|
|
|
|
}
|
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> toggleVibrationMode({bool? value}) async {
|
|
|
|
isVibrationOn = value ?? !isVibrationOn;
|
|
|
|
setPrefValue(isVibrationOnPref, isVibrationOn);
|
|
|
|
}
|
|
|
|
|
|
|
|
@action
|
|
|
|
Future<void> setLanguage(String aLanguage) async {
|
|
|
|
selectedLanguage = aLanguage;
|
|
|
|
await setPrefValue(languagePref, aLanguage);
|
|
|
|
}
|
|
|
|
}
|