From c25d4b49b680740f52db4611a34545cff9f48fc2 Mon Sep 17 00:00:00 2001 From: Petrus Nguyen Thai Hoc Date: Thu, 2 Jun 2022 01:55:29 +0700 Subject: [PATCH] fix: shared_preferences_adapter --- example/ios/Flutter/AppFrameworkInfo.plist | 2 +- example/ios/Podfile.lock | 14 ++--- example/ios/Runner.xcodeproj/project.pbxproj | 4 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- example/ios/Runner/Info.plist | 2 + lib/src/impl/shared_preferences_adapter.dart | 54 +++++++++---------- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 9367d48..8d4492f 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 8332245..002477c 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,22 +1,22 @@ PODS: - Flutter (1.0.0) - - shared_preferences (0.0.1): + - shared_preferences_ios (0.0.1): - Flutter DEPENDENCIES: - Flutter (from `Flutter`) - - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) EXTERNAL SOURCES: Flutter: :path: Flutter - shared_preferences: - :path: ".symlinks/plugins/shared_preferences/ios" + shared_preferences_ios: + :path: ".symlinks/plugins/shared_preferences_ios/ios" SPEC CHECKSUMS: - Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c - shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index dfcdd56..5dcb89f 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..3db53b6 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + diff --git a/lib/src/impl/shared_preferences_adapter.dart b/lib/src/impl/shared_preferences_adapter.dart index 2e7eedd..964fdbc 100644 --- a/lib/src/impl/shared_preferences_adapter.dart +++ b/lib/src/impl/shared_preferences_adapter.dart @@ -18,6 +18,15 @@ class SharedPreferencesAdapter implements SharedPreferencesLike { static Future _wrapFutureOr(FutureOr value) => value is Future ? value : SynchronousFuture(value); + /// Create [SharedPreferencesAdapter] from [SharedPreferences]. + static FutureOr from( + FutureOr prefsOrFuture, + ) => + prefsOrFuture is Future + ? prefsOrFuture.then((p) => SharedPreferencesAdapter._(p)) + : SharedPreferencesAdapter._(prefsOrFuture) + as FutureOr; + @override Future clear([void _]) => _prefs.clear().throwsIfNotSuccess('Cannot clear'); @@ -27,42 +36,20 @@ class SharedPreferencesAdapter implements SharedPreferencesLike { _wrap(_prefs.containsKey(key)); @override - Future> reload() { - return _prefs.reload().then((_) { - return { - for (final k in _prefs.getKeys()) k: _prefs.get(k), - }; - }); - } + Future> reload() => + _prefs.reload().then((_) => _getAllFromPrefs()); @override Future remove(String key, [void _]) => _prefs.remove(key).throwsIfNotSuccess('Cannot remove key=$key'); - /// Create [SharedPreferencesAdapter] from [SharedPreferences]. - static FutureOr from( - FutureOr prefsOrFuture, - ) => - prefsOrFuture is Future - ? prefsOrFuture.then((p) => SharedPreferencesAdapter._(p)) - : SharedPreferencesAdapter._(prefsOrFuture) - as FutureOr; - @override - Future read(String key, Decoder decoder, [void _]) { - var val = _prefs.get(key); - if (val is List) { - val = _prefs.getStringList(key); - } - return _wrapFutureOr(decoder(val)); - } + Future read(String key, Decoder decoder, + [void _]) => + _wrapFutureOr(decoder(_getFromPrefs(key))); @override - Future> readAll([void _]) { - return _wrap({ - for (final k in _prefs.getKeys()) k: _prefs.get(k), - }); - } + Future> readAll([void _]) => _wrap(_getAllFromPrefs()); @override Future write( @@ -74,6 +61,17 @@ class SharedPreferencesAdapter implements SharedPreferencesLike { : _write(encodedOrFuture, key, value); } + Object? _getFromPrefs(String key) { + final val = _prefs.get(key); + return val is List ? _prefs.getStringList(key) : val; + } + + Map _getAllFromPrefs() { + return { + for (final k in _prefs.getKeys()) k: _getFromPrefs(k), + }; + } + Future _write(Object? encoded, String key, Object? value) { assert(encoded is! Future, 'The actual type of encoded value is ${encoded.runtimeType}');