diff --git a/android/gradle.properties b/android/gradle.properties index c8bbff9bd599a7c3ffbe76de5a61ead3de90631a..4d8dcd2635bb8701e212029096d53cf5dc060e45 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.39 -app.versionCode=39 +app.versionName=0.0.40 +app.versionCode=40 diff --git a/fastlane/metadata/android/en-US/changelogs/40.txt b/fastlane/metadata/android/en-US/changelogs/40.txt new file mode 100644 index 0000000000000000000000000000000000000000..987d73c34113be503b2f6950ae20541284f057fc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40.txt @@ -0,0 +1 @@ +Save/retrieve game settings diff --git a/fastlane/metadata/android/fr-FR/changelogs/40.txt b/fastlane/metadata/android/fr-FR/changelogs/40.txt new file mode 100644 index 0000000000000000000000000000000000000000..c2e5e4f06ed7bf38e26c69dd3cef756455f92b0f --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/40.txt @@ -0,0 +1 @@ +Sauvegarde et recharge des paramètres de jeu diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 8162bc6e8f5d9f1a0934d0c874b43819c27755c9..7889fcfe5cbcf79617dfc35972109bb8e74ce882 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -1,4 +1,5 @@ import 'package:flutter/foundation.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class Data extends ChangeNotifier { @@ -12,9 +13,12 @@ class Data extends ChangeNotifier { List get availableSkins => _availableSkins; // Application default configuration - String _level = 'medium'; - String _size = '3x3'; - String _skin = 'default'; + String _level = null; + String _levelDefault = 'medium'; + String _size = null; + String _sizeDefault = '3x3'; + String _skin = null; + String _skinDefault = 'default'; bool _showConflicts = false; // Game data @@ -78,7 +82,7 @@ class Data extends ChangeNotifier { } } - setParameterValue(String parameterCode, String parameterValue) { + setParameterValue(String parameterCode, String parameterValue) async { switch(parameterCode) { case 'difficulty': { updateLevel = parameterValue; } break; @@ -87,6 +91,15 @@ class Data extends ChangeNotifier { 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 8eca130d024200d4a61a54b7f317b4009c41c2e2..e797369ee9b056de33f6f47e32b8373000572c54 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -7,9 +7,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 0d88ec6c907fac3f6b25069a862f70aa0a390374..183d1e8e33ba85369c4d628661851d156add14a6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.1" clock: dependency: transitive description: @@ -57,6 +57,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 @@ -67,6 +81,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: @@ -80,7 +106,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.4.0" + version: "1.7.0" nested: dependency: transitive description: @@ -95,6 +121,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: @@ -102,6 +170,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 @@ -148,7 +258,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.4.1" typed_data: dependency: transitive description: @@ -163,6 +273,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 3823b903cd25b2b4ee96e53753095042b9673e6f..2a25000a0adc8676bf44598b4a52d0edfc10fc09 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,6 +11,7 @@ dependencies: sdk: flutter provider: ^5.0.0 badges: ^2.0.1 + shared_preferences: ^2.0.6 dev_dependencies: flutter_test: