import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { // Configuration available values final List<String> _availableLevelValues = ['easy', 'medium', 'hard']; final List<String> _availableSkinValues = ['default', 'images']; List<String> get availableLevelValues => _availableLevelValues; List<String> get availableSkinValues => _availableSkinValues; // Application default configuration String _parameterLevel = ''; final String _parameterLevelDefault = 'medium'; String _parameterSkin = ''; final String _parameterSkinDefault = 'default'; // Application current configuration String get parameterLevel => _parameterLevel; String get parameterSkin => _parameterSkin; // Game data bool _gameIsRunning = false; bool _gameWon = false; void updateParameterLevel(String parameterLevel) { _parameterLevel = parameterLevel; notifyListeners(); } void updateParameterSkin(String parameterSkin) { _parameterSkin = parameterSkin; notifyListeners(); } String getParameterValue(String parameterCode) { switch (parameterCode) { case 'level': { return _parameterLevel; } case 'skin': { return _parameterSkin; } } return ''; } List getParameterAvailableValues(String parameterCode) { switch (parameterCode) { case 'level': { return _availableLevelValues; } case 'skin': { return _availableSkinValues; } } return []; } setParameterValue(String parameterCode, String parameterValue) async { switch (parameterCode) { case 'level': { updateParameterLevel(parameterValue); } break; case 'skin': { updateParameterSkin(parameterValue); } break; } final prefs = await SharedPreferences.getInstance(); prefs.setString(parameterCode, parameterValue); } void initParametersValues() async { final prefs = await SharedPreferences.getInstance(); setParameterValue('level', prefs.getString('level') ?? _parameterLevelDefault); setParameterValue('skin', prefs.getString('skin') ?? _parameterSkinDefault); } bool get gameIsRunning => _gameIsRunning; void updateGameIsRunning(bool gameIsRunning) { _gameIsRunning = gameIsRunning; notifyListeners(); } bool isGameFinished() { return _gameWon; } bool get gameWon => _gameWon; void updateGameWon(bool gameWon) { _gameWon = gameWon; notifyListeners(); } void resetGame() { _gameIsRunning = false; _gameWon = false; notifyListeners(); } }