Select Git revision
-
Benoît Harrault authoredBenoît Harrault authored
data.dart 3.36 KiB
import 'package:flutter/foundation.dart';
import '../utils/shared_prefs.dart';
import '../utils/constants.dart';
class Data extends ChangeNotifier {
// settings
final SharedPrefs _sharedPrefs = SharedPrefs();
// screen settings
bool _gameModeValue = false;
String _levelValue = defaultLevel;
// randomization
String _secretWord;
bool _searching = false;
String _clue = '';
List<String> _hiddenWord = [];
List<String> _usedLetters = [];
bool get searching => _searching;
set searching(bool value) {
_searching = value;
notifyListeners();
}
// scores
int _errors = 0;
int _victoryCount = 0;
int _defeatCount = 0;
Data() {
_getPrefs();
}
void _getPrefs() async {
await _sharedPrefs.init();
_gameModeValue = _sharedPrefs.gameMode ??
onlineGameMode.keys
.firstWhere((k) => onlineGameMode[k].contains(_sharedPrefs.level), orElse: () => false);
_levelValue = onlineGameMode[_gameModeValue].contains(_sharedPrefs.level)
? _sharedPrefs.level
: onlineGameMode[_gameModeValue].first;
_victoryCount = _sharedPrefs.victoryCount ?? 0;
_defeatCount = _sharedPrefs.defeatCount ?? 0;
notifyListeners();
}
bool get gameModePref => _sharedPrefs.gameMode ?? false;
String get levelPref => _sharedPrefs.level ?? onlineGameMode[gameModePref].first;
void resetValues() => _getPrefs();
set setPrefGameMode(bool prefGameMode) {
_sharedPrefs.gameMode = prefGameMode;
notifyListeners();
}
set setPrefLevel(String prefLevel) {
_sharedPrefs.level = prefLevel;
notifyListeners();
}
bool get gameModeValue => _gameModeValue;
set updateGameMode(bool value) {
_gameModeValue = value;
setPrefGameMode = gameModeValue;
updateLevel = onlineGameMode[value].first;
notifyListeners();
}
String get levelValue => _levelValue;
set updateLevel(String value) {
_levelValue = value;
setPrefLevel = levelValue;
notifyListeners();
}
String get secretWord => _secretWord;
set updateSecretWord(String value) {
_secretWord = value;
_hiddenWord = List<String>.generate(value.length, (i) => '_');
notifyListeners();
}
String get clue => _clue;
set updateClue(String value) {
_clue = value;
notifyListeners();
}
String get hiddenWord => _hiddenWord.join();
void updateHiddenWord(int index, String letra) {
_hiddenWord[index] = letra;
notifyListeners();
}
List<String> get usedLetters => _usedLetters;
void updateUsedLetters(String key) {
_usedLetters.add(key);
notifyListeners();
}
void resetUsedLetters() {
_usedLetters.clear();
notifyListeners();
}
int get errors => _errors;
void addError() {
_errors++;
notifyListeners();
}
void resetSuccessAndErrors() {
_errors = 0;
notifyListeners();
}
int get victoryCount => _victoryCount;
int get defeatCount => _defeatCount;
void addVictory() {
_victoryCount++;
_sharedPrefs.victoryCount = _victoryCount;
notifyListeners();
}
void addDefeat() {
_defeatCount++;
_sharedPrefs.defeatCount = _defeatCount;
notifyListeners();
}
void resetScores() {
_victoryCount = 0;
_defeatCount = 0;
notifyListeners();
}
void resetGame() {
_errors = 0;
_secretWord = null;
_clue = '';
_hiddenWord = [];
_usedLetters = [];
_usedLetters.clear();
notifyListeners();
}
}