From 065a7a0c9e7085bc19a316fce81522267a31cef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Fri, 30 Jul 2021 15:37:18 +0200 Subject: [PATCH] Save/retrieve settings --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/40.txt | 1 + .../metadata/android/fr-FR/changelogs/40.txt | 1 + lib/provider/data.dart | 21 ++- lib/screens/home.dart | 15 +- pubspec.lock | 134 +++++++++++++++++- pubspec.yaml | 1 + 7 files changed, 165 insertions(+), 12 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/40.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/40.txt diff --git a/android/gradle.properties b/android/gradle.properties index c8bbff9..4d8dcd2 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 0000000..987d73c --- /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 0000000..c2e5e4f --- /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 8162bc6..7889fcf 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 8eca130..e797369 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 0d88ec6..183d1e8 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 3823b90..2a25000 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: -- GitLab