From 5840fba7eee390f546011c15dca717033b826c03 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 31 Jul 2024 18:26:38 -0700 Subject: [PATCH 1/3] fix stringlist bug --- .../shared_preferences/CHANGELOG.md | 4 ++++ .../integration_test/shared_preferences_test.dart | 11 +++++++++++ .../lib/src/shared_preferences_async.dart | 3 +-- .../shared_preferences/pubspec.yaml | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 5df6b1f51dd7..206a631f9a82 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.1 + +* Fixes `getStringList` bug with List cast exception. + ## 2.3.0 * Adds `SharedPreferencesAsync` and `SharedPreferencesWithCache` APIs. diff --git a/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart index 08afb46b9b81..24a152cf5045 100644 --- a/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart +++ b/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart @@ -587,6 +587,17 @@ void main() { expect(preferences.getStringList(listKey), testList); }); + testWidgets('get StringList handles List', + (WidgetTester _) async { + final ( + SharedPreferencesWithCache preferences, + Map cache + ) = await getPreferences(); + final List listObject = ['one', 'two']; + cache[listKey] = listObject; + expect(preferences.getStringList(listKey), listObject); + }); + testWidgets('reloading', (WidgetTester _) async { final ( SharedPreferencesWithCache preferences, diff --git a/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart b/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart index 56ea4e33dfab..578572f69cbd 100644 --- a/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart +++ b/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart @@ -307,9 +307,8 @@ class SharedPreferencesWithCache { throw ArgumentError( '$key is not included in the PreferencesFilter allowlist'); } - final List? list = _cache[key] as List?; // Make a copy of the list so that later mutations won't propagate - return list?.toList(); + return (_cache[key] as List?)?.cast().toList(); } /// Saves a boolean [value] to the cache and platform. diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index ada0f98ff360..60cff3ab334b 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.3.0 +version: 2.3.1 environment: sdk: ^3.3.0 From 1ee44d6ce9f60ac5aec6972835a3905e15f3d40b Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 1 Aug 2024 10:31:29 -0700 Subject: [PATCH 2/3] fix the right thing --- packages/shared_preferences/shared_preferences/CHANGELOG.md | 2 +- .../example/integration_test/shared_preferences_test.dart | 4 ++-- .../shared_preferences/lib/src/shared_preferences_async.dart | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 206a631f9a82..0ae0c7104db0 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.3.1 -* Fixes `getStringList` bug with List cast exception. +* Fixes `getStringList` bug with `List` cast exception. ## 2.3.0 diff --git a/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart index 24a152cf5045..07cd53e4d818 100644 --- a/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart +++ b/packages/shared_preferences/shared_preferences/example/integration_test/shared_preferences_test.dart @@ -587,13 +587,13 @@ void main() { expect(preferences.getStringList(listKey), testList); }); - testWidgets('get StringList handles List', + testWidgets('get StringList handles List', (WidgetTester _) async { final ( SharedPreferencesWithCache preferences, Map cache ) = await getPreferences(); - final List listObject = ['one', 'two']; + final List listObject = ['one', 'two']; cache[listKey] = listObject; expect(preferences.getStringList(listKey), listObject); }); diff --git a/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart b/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart index 578572f69cbd..516788542fd1 100644 --- a/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart +++ b/packages/shared_preferences/shared_preferences/lib/src/shared_preferences_async.dart @@ -308,7 +308,7 @@ class SharedPreferencesWithCache { '$key is not included in the PreferencesFilter allowlist'); } // Make a copy of the list so that later mutations won't propagate - return (_cache[key] as List?)?.cast().toList(); + return (_cache[key] as List?)?.cast().toList(); } /// Saves a boolean [value] to the cache and platform. From 266f649f379281029b1fd35d0bd75bd8e5f9b448 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Thu, 1 Aug 2024 13:33:33 -0400 Subject: [PATCH 3/3] Update CHANGELOG.md --- packages/shared_preferences/shared_preferences/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 0ae0c7104db0..b3ab617f5386 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.3.1 -* Fixes `getStringList` bug with `List` cast exception. +* Fixes `getStringList` bug with `List` cast exception. ## 2.3.0