import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { // Configuration available values List _availableLevelValues = ['easy', 'normal', 'hard', 'nightmare']; List _availableSkinValues = ['colors', 'retro']; List get availableLevelValues => _availableLevelValues; List get availableSkinValues => _availableSkinValues; // Application default configuration String _level = ''; String _levelDefault = 'normal'; String _skin = ''; String _skinDefault = 'colors'; // Game data bool _gameIsRunning = false; bool _gameWon = false; String get level => _level; void updateLevel(String level) { _level = level; notifyListeners(); } String get skin => _skin; void updateSkin(String skin) { _skin = skin; notifyListeners(); } getParameterValue(String parameterCode) { switch(parameterCode) { case 'level': { return _level; } break; case 'skin': { return _skin; } break; } } List getParameterAvailableValues(String parameterCode) { switch(parameterCode) { case 'level': { return _availableLevelValues; } break; case 'skin': { return _availableSkinValues; } break; } return []; } setParameterValue(String parameterCode, String parameterValue) async { switch(parameterCode) { case 'level': { updateLevel(parameterValue); } break; case 'skin': { updateSkin(parameterValue); } break; } final prefs = await SharedPreferences.getInstance(); prefs.setString(parameterCode, parameterValue); } void initParametersValues() async { final prefs = await SharedPreferences.getInstance(); setParameterValue('level', prefs.getString('level') ?? _levelDefault); setParameterValue('skin', prefs.getString('skin') ?? _skinDefault); } bool get gameIsRunning => _gameIsRunning; void updateGameIsRunning(bool gameIsRunning) { _gameIsRunning = gameIsRunning; notifyListeners(); } bool isGameFinished() { return false; } bool get gameWon => _gameWon; void resetGame() { _gameIsRunning = false; _gameWon = false; notifyListeners(); } }