From 1fac0208f5a376e88c3ecb850a0e9e38f3ab999f Mon Sep 17 00:00:00 2001 From: Sergey Okatov Date: Wed, 15 Jan 2020 09:58:15 +0500 Subject: [PATCH 1/2] A bug that caused corrupted prefs-file due to simultaneous writes is fixed in this commit --- lib/src/preferences_io.dart | 16 ++++++++++++++-- pubspec.yaml | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/src/preferences_io.dart b/lib/src/preferences_io.dart index 0773f6b..f5daaee 100644 --- a/lib/src/preferences_io.dart +++ b/lib/src/preferences_io.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:io'; @@ -83,6 +84,7 @@ class IOPreferences extends Preferences { @override Future setValue(String key, Object value) async { + print("Setting value"); if (key == null) { preferenceCache.clear(); preferenceCache.addAll(value); @@ -92,6 +94,17 @@ class IOPreferences extends Preferences { preferenceCache[key] = value; } + _markToSave(); + return true; + } + + Timer lastMarked; + _markToSave() { + lastMarked?.cancel(); + lastMarked = Timer(Duration(milliseconds: 20), _makeSave); + } + + _makeSave() async { if (filePath != null) { final file = File(filePath); if (isCrypted) { @@ -100,10 +113,9 @@ class IOPreferences extends Preferences { try { await file.writeAsString(json.encode(preferenceCache)); } catch (err) { - return false; + print(err); } } - return true; } /// Completes with true once the user preferences for the app has been cleared. diff --git a/pubspec.yaml b/pubspec.yaml index 7dfcd95..67bfdfb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: crypted_preferences description: Flutter preferences management with crypto capabilities -version: 0.0.2 +version: 0.0.3 homepage: https://github.com/jaumard/crypted_preferences repository: https://github.com/jaumard/crypted_preferences author: jaumard From 639cde3ca30b6f42ba9291fe2d90ebc4b10fee38 Mon Sep 17 00:00:00 2001 From: Sergey Okatov Date: Tue, 18 Feb 2020 21:43:36 +0500 Subject: [PATCH 2/2] clean up code --- lib/src/preferences_io.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/preferences_io.dart b/lib/src/preferences_io.dart index f5daaee..10a1d35 100644 --- a/lib/src/preferences_io.dart +++ b/lib/src/preferences_io.dart @@ -84,7 +84,6 @@ class IOPreferences extends Preferences { @override Future setValue(String key, Object value) async { - print("Setting value"); if (key == null) { preferenceCache.clear(); preferenceCache.addAll(value);