From 1ca9f6def152c8c5d034371ad84e98be2d98ab81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Tue, 2 Jan 2024 16:37:10 +0800 Subject: [PATCH 01/10] Update shared_preferences_web.dart --- .../lib/shared_preferences_web.dart | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart index b83c1a5fe37e..bad692395e63 100644 --- a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart +++ b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart @@ -100,16 +100,25 @@ class SharedPreferencesPlugin extends SharedPreferencesStorePlatform { return json.encode(value); } - Object _decodeValue(String encodedValue) { - final Object? decodedValue = json.decode(encodedValue); - if (decodedValue is List) { - // JSON does not preserve generics. The encode/decode roundtrip is - // `List` => JSON => `List`. We have to explicitly - // restore the RTTI. - return decodedValue.cast(); + Object _decodeValue(String encodedValue) { + try { + // Attempt to decode the value as JSON + final Object? decodedValue = json.decode(encodedValue); + + if (decodedValue is List) { + // JSON does not preserve generics. The encode/decode roundtrip is + // `List` => JSON => `List`. We have to explicitly + // restore the RTTI. + return decodedValue.cast(); + } + + return decodedValue!; + } catch (e) { + // If decoding fails, it might be because the value is not a valid JSON string. + // In such a case, return the original string directly. + return encodedValue; } - - return decodedValue!; } + } From 8dcbcf10dbfe4b8ec275da266870ff8e0b194927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Tue, 2 Jan 2024 17:05:42 +0800 Subject: [PATCH 02/10] Update shared_preferences_web.dart --- .../shared_preferences_web/lib/shared_preferences_web.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart index bad692395e63..9f68159f8fba 100644 --- a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart +++ b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart @@ -117,6 +117,7 @@ class SharedPreferencesPlugin extends SharedPreferencesStorePlatform { } catch (e) { // If decoding fails, it might be because the value is not a valid JSON string. // In such a case, return the original string directly. + debugPrint("${encodedValue} is not a valid JSON string.") return encodedValue; } } From 9e50099c2286c81dae8b5cc7930a844d607d72eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Tue, 2 Jan 2024 17:16:57 +0800 Subject: [PATCH 03/10] Update shared_preferences_web.dart --- .../lib/shared_preferences_web.dart | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart index 9f68159f8fba..46b06bd50c3d 100644 --- a/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart +++ b/packages/shared_preferences/shared_preferences_web/lib/shared_preferences_web.dart @@ -103,22 +103,29 @@ class SharedPreferencesPlugin extends SharedPreferencesStorePlatform { Object _decodeValue(String encodedValue) { try { - // Attempt to decode the value as JSON + // Attempt to decode the string as JSON final Object? decodedValue = json.decode(encodedValue); if (decodedValue is List) { - // JSON does not preserve generics. The encode/decode roundtrip is - // `List` => JSON => `List`. We have to explicitly - // restore the RTTI. + // JSON does not preserve generics. The encode/decode roundtrip results in + // `List` => JSON => `List`. Explicit restoration of RTTI is required. return decodedValue.cast(); } return decodedValue!; + } on FormatException { + // If there is a FormatException, try adding double quotes and parsing again + try { + return json.decode('\"$encodedValue\"'); + } catch (e) { + // If parsing still fails, return the original string + // This indicates the string may not be a valid JSON format + return encodedValue; + } } catch (e) { - // If decoding fails, it might be because the value is not a valid JSON string. - // In such a case, return the original string directly. - debugPrint("${encodedValue} is not a valid JSON string.") - return encodedValue; + // Print the exception and return an empty string + print(e.toString()); + return ''; } } From 522919a316eee2c7bd807e6104748543610af1f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Mon, 8 Jan 2024 15:42:28 +0800 Subject: [PATCH 04/10] Update version in pubspec.yaml --- packages/shared_preferences/shared_preferences/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 53c19f8a90b6..9ac738634f57 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. repository: https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+shared_preferences%22 -version: 2.2.2 +version: 2.2.3 environment: sdk: ">=3.0.0 <4.0.0" From 3be14d659773c11f9ae74c04ce244727246b20c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Mon, 8 Jan 2024 15:43:29 +0800 Subject: [PATCH 05/10] Update version in pubspec.yaml --- packages/shared_preferences/shared_preferences_web/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences_web/pubspec.yaml b/packages/shared_preferences/shared_preferences_web/pubspec.yaml index ceb1dfebcf7a..6f851ec66ca7 100644 --- a/packages/shared_preferences/shared_preferences_web/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_web/pubspec.yaml @@ -2,7 +2,7 @@ name: shared_preferences_web description: Web platform implementation of shared_preferences repository: https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences_web issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+shared_preferences%22 -version: 2.2.2 +version: 2.2.3 environment: sdk: ">=3.2.0 <4.0.0" From 660c1a755f435e0cc121bf9fe87134193bf009f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Mon, 8 Jan 2024 15:46:16 +0800 Subject: [PATCH 06/10] Update CHANGELOG.md --- packages/shared_preferences/shared_preferences/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 7f70c6f535f6..e25382c35f52 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -2,6 +2,10 @@ * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. +## 2.2.3 + +* Fixes `shared_preferences_web` issue where non-JSON formatted strings cause parsing errors when getAllWithParameters is called. + ## 2.2.2 * Updates documentation for `containsKey`. From cf39233ca5347cb2377cb0614add60402d72c1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Mon, 8 Jan 2024 15:47:30 +0800 Subject: [PATCH 07/10] Update CHANGELOG.md --- .../shared_preferences/shared_preferences_web/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md index 5f5d8c246cd6..07d71ce31452 100644 --- a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2.2.3 +* Fixes shared_preferences_web issue where non-JSON formatted strings cause parsing errors when `getAllWithParameters` is called. + ## 2.2.2 * Updates minimum supported SDK version to Dart 3.2. From ed2fb56576273e35002518cbe4ffcaff144dcf34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Mon, 8 Jan 2024 15:52:44 +0800 Subject: [PATCH 08/10] Update CHANGELOG.md --- packages/shared_preferences/shared_preferences_web/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md index 07d71ce31452..a188c2f19660 100644 --- a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md @@ -1,4 +1,5 @@ ## 2.2.3 + * Fixes shared_preferences_web issue where non-JSON formatted strings cause parsing errors when `getAllWithParameters` is called. ## 2.2.2 From 31f1834d0b1d8aae481275cc64c5b247897b318a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Fri, 2 Feb 2024 07:20:11 +0800 Subject: [PATCH 09/10] Update pubspec.yaml --- packages/shared_preferences/shared_preferences/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 9ac738634f57..53c19f8a90b6 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. repository: https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+shared_preferences%22 -version: 2.2.3 +version: 2.2.2 environment: sdk: ">=3.0.0 <4.0.0" From b0c9d817b964028fc06a8f614cd5e5483bea5719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A4=8D=E5=BF=83?= Date: Fri, 2 Feb 2024 07:20:50 +0800 Subject: [PATCH 10/10] Update CHANGELOG.md --- packages/shared_preferences/shared_preferences/CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index e25382c35f52..7f70c6f535f6 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -2,10 +2,6 @@ * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. -## 2.2.3 - -* Fixes `shared_preferences_web` issue where non-JSON formatted strings cause parsing errors when getAllWithParameters is called. - ## 2.2.2 * Updates documentation for `containsKey`.