diff --git a/android/gradle.properties b/android/gradle.properties index 85b94f88ee157e1d1b3cec184c8948902443d36f..65eed6426393974efb5a056ec44936d42b5ef2a1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.7 -app.versionCode=7 +app.versionName=0.0.8 +app.versionCode=8 diff --git a/fastlane/metadata/android/en-US/changelogs/8.txt b/fastlane/metadata/android/en-US/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..fa2e56b41c847c0c4777b0c0b2c3aa44948dd10f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/8.txt @@ -0,0 +1 @@ +Save and restore game settings diff --git a/fastlane/metadata/android/fr-FR/changelogs/8.txt b/fastlane/metadata/android/fr-FR/changelogs/8.txt new file mode 100644 index 0000000000000000000000000000000000000000..ded4ff2dae2a42a54f0c449a2fa9347261ae4e70 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/8.txt @@ -0,0 +1 @@ +Sauvegarde et restauration des paramètres de jeu diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 75cf51392870f4d9269d32b4150ff3c17cf209e9..7f90cf37c447cf7f43fb143cf68474e29fbca2cd 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -1,18 +1,24 @@ import 'package:flutter/foundation.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { // Configuration available values List _availableDifficultyLevels = ['easy', 'medium', 'hard', 'nightmare']; List _availableSizes = ['10x10', '15x15', '20x20']; + List _availableSkins = ['default']; List get availableDifficultyLevels => _availableDifficultyLevels; List get availableSizes => _availableSizes; + List get availableSkins => _availableSkins; // Application default configuration - String _level = 'medium'; - String _size = '15x15'; - String _skin = 'default'; + String _level = null; + String _levelDefault = 'medium'; + String _size = null; + String _sizeDefault = '15x15'; + String _skin = null; + String _skinDefault = 'default'; // Game data bool _gameRunning = false; @@ -53,6 +59,8 @@ class Data extends ChangeNotifier { break; case 'size': { return _size; } break; + case 'skin': { return _skin; } + break; } } @@ -62,16 +70,29 @@ class Data extends ChangeNotifier { break; case 'size': { return _availableSizes; } break; + case 'skin': { return _availableSkins; } + break; } } - setParameterValue(String parameterCode, String parameterValue) { + setParameterValue(String parameterCode, String parameterValue) async { switch(parameterCode) { case 'difficulty': { updateLevel(parameterValue); } break; case 'size': { updateSize(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('difficulty', prefs.getString('difficulty') ?? _levelDefault); + setParameterValue('size', prefs.getString('size') ?? _sizeDefault); + setParameterValue('skin', prefs.getString('skin') ?? _skinDefault); } List get cells => _cells; diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 204be18a3d6204578b4c7596fe415b1cca727446..6dbde15516c2030d8526ff4a92e1b7e1a98002bd 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -6,9 +6,22 @@ import '../layout/parameters.dart'; import '../provider/data.dart'; import '../utils/game_utils.dart'; -class Home extends StatelessWidget { +class Home extends StatefulWidget { static const String id = 'home'; + @override + _HomeState createState() => _HomeState(); +} + +class _HomeState extends State<Home> { + @override + void initState() { + super.initState(); + + Data myProvider = Provider.of<Data>(context, listen: false); + myProvider.initParametersValues(); + } + @override Widget build(BuildContext context) { Data myProvider = Provider.of<Data>(context); diff --git a/pubspec.lock b/pubspec.lock index b6eca0d9a310f699c2be40fd6273acfa381332e9..dd1b0e5e19dad6f80a9f30a2edf7f3fa0fec70e7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -50,6 +50,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" flutter: dependency: "direct main" description: flutter @@ -60,6 +74,18 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" matcher: dependency: transitive description: @@ -88,6 +114,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.3" provider: dependency: "direct main" description: @@ -95,6 +163,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.0.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -156,6 +266,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.5" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" sdks: - dart: ">=2.12.0 <3.0.0" - flutter: ">=1.16.0" + dart: ">=2.13.0 <3.0.0" + flutter: ">=2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 2b41f4f19fe230f65d2edd16a773e2f321c5f59b..c15502e7c337f2d0133e94844464ead7b04a80a9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: flutter: sdk: flutter provider: ^5.0.0 + shared_preferences: ^2.0.6 dev_dependencies: flutter_test: