From 79a0f21782ca55e4bea4de04412343fc49ffcc21 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 12 Dec 2024 17:38:27 -0800 Subject: [PATCH 1/5] readme changes for shared preferences shared preferences --- .../shared_preferences/CHANGELOG.md | 4 ++++ .../shared_preferences/README.md | 19 ++++++++++++++++--- .../example/android/app/build.gradle | 8 ++++++++ .../example/lib/readme_excerpts.dart | 9 +++++++++ .../shared_preferences/example/pubspec.yaml | 1 + .../shared_preferences/pubspec.yaml | 2 +- 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 81708ac65323..4ab7bd2418cc 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.4 + +* Adds information about Android SharedPreferences support. + ## 2.3.3 * Clarifies scope of prefix handling in README. diff --git a/packages/shared_preferences/shared_preferences/README.md b/packages/shared_preferences/shared_preferences/README.md index bd9fd06dbc91..e8f655e598e8 100644 --- a/packages/shared_preferences/shared_preferences/README.md +++ b/packages/shared_preferences/shared_preferences/README.md @@ -50,9 +50,22 @@ latest data stored on the native platform regardless of what process was used to ### Android platform storage -The [SharedPreferences] API uses the native [Android Shared Preferences](https://developer.android.com/reference/android/content/SharedPreferences) tool to store data. +The [SharedPreferencesAsync] and [SharedPreferencesWithCache] APIs can use [DataStore Preferences](https://developer.android.com/topic/libraries/architecture/datastore) or [Android SharedPreferences](https://developer.android.com/reference/android/content/SharedPreferences) to store data. +In most cases you should use the default option of DataStore Preferences, as it is the platform-recommended preferences storage system. +However, in some cases you may need to interact with preferences that were written to SharedPreferences by code you don't control. -The [SharedPreferencesAsync] and [SharedPreferencesWithCache] APIs use [DataStore Preferences](https://developer.android.com/topic/libraries/architecture/datastore) to store data. +To use the `Android SharedPreferences` backend, use the `SharedPreferencesAsyncAndroidOptions` when using [SharedPreferencesAsync] on Android. + + +```dart +const SharedPreferencesAsyncAndroidOptions options = + SharedPreferencesAsyncAndroidOptions( + backend: SharedPreferencesAndroidBackendLibrary.SharedPreferences, + originalSharedPreferencesOptions: AndroidSharedPreferencesStoreOptions( + fileName: 'the_name_of_a_file')); +``` + +The [SharedPreferences] API uses the native [Android SharedPreferences](https://developer.android.com/reference/android/content/SharedPreferences) tool to store data. ## Examples Here are small examples that show you how to use the API. @@ -187,7 +200,7 @@ the new prefix otherwise the old preferences will be inaccessible. | Platform | SharedPreferences | SharedPreferencesAsync/WithCache | | :--- | :--- | :--- | -| Android | SharedPreferences | DataStore Preferences | +| Android | SharedPreferences | DataStore Preferences or SharedPreferences | | iOS | NSUserDefaults | NSUserDefaults | | Linux | In the XDG_DATA_HOME directory | In the XDG_DATA_HOME directory | | macOS | NSUserDefaults | NSUserDefaults | diff --git a/packages/shared_preferences/shared_preferences/example/android/app/build.gradle b/packages/shared_preferences/shared_preferences/example/android/app/build.gradle index 164bf3d57c04..c5af65d2600a 100644 --- a/packages/shared_preferences/shared_preferences/example/android/app/build.gradle +++ b/packages/shared_preferences/shared_preferences/example/android/app/build.gradle @@ -30,6 +30,14 @@ android { main.java.srcDirs += 'src/main/kotlin' } + kotlinOptions { + jvmTarget = '11' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + defaultConfig { applicationId "io.flutter.plugins.sharedpreferencesexample" minSdkVersion flutter.minSdkVersion diff --git a/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart b/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart index 032409d49014..4236a4339c94 100644 --- a/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart +++ b/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart @@ -4,6 +4,7 @@ // ignore_for_file: public_member_api_docs, unused_local_variable, invalid_use_of_visible_for_testing_member import 'package:shared_preferences/shared_preferences.dart'; +import 'package:shared_preferences_android/shared_preferences_android.dart'; Future readmeSnippets() async { // #docregion Write @@ -92,3 +93,11 @@ Future readmeTestSnippets() async { SharedPreferences.setMockInitialValues(values); // #enddocregion Tests } + +// #docregion Android_Options +const SharedPreferencesAsyncAndroidOptions options = + SharedPreferencesAsyncAndroidOptions( + backend: SharedPreferencesAndroidBackendLibrary.SharedPreferences, + originalSharedPreferencesOptions: AndroidSharedPreferencesStoreOptions( + fileName: 'the_name_of_a_file')); +// #enddocregion Android_Options diff --git a/packages/shared_preferences/shared_preferences/example/pubspec.yaml b/packages/shared_preferences/shared_preferences/example/pubspec.yaml index cbf79d353af5..e8bd2e683ed4 100644 --- a/packages/shared_preferences/shared_preferences/example/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/example/pubspec.yaml @@ -16,6 +16,7 @@ dependencies: # The example app is bundled with the plugin so we use a path dependency on # the parent directory to use the current plugin's version. path: ../ + shared_preferences_android: ^2.4.0 shared_preferences_platform_interface: ^2.4.0 dev_dependencies: diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 6c715ff7e3af..2207be445746 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.3 +version: 2.3.4 environment: sdk: ^3.4.0 From bf8dd183ddb3b2ae0c59adbd137a7741f18a9f49 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 13 Dec 2024 15:45:11 -0800 Subject: [PATCH 2/5] sdk --- .../shared_preferences/shared_preferences/example/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences/example/pubspec.yaml b/packages/shared_preferences/shared_preferences/example/pubspec.yaml index e8bd2e683ed4..047a00031638 100644 --- a/packages/shared_preferences/shared_preferences/example/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/example/pubspec.yaml @@ -3,7 +3,7 @@ description: Demonstrates how to use the shared_preferences plugin. publish_to: none environment: - sdk: ^3.4.0 + sdk: ^3.5.0 flutter: ">=3.22.0" dependencies: From ea88cd6180566935ac4160398ae27feddfec01ef Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 13 Dec 2024 16:04:03 -0800 Subject: [PATCH 3/5] 3.5 --- 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 2207be445746..55d129f68cc3 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -6,7 +6,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 2.3.4 environment: - sdk: ^3.4.0 + sdk: ^3.5.0 flutter: ">=3.22.0" flutter: From 359722c101f77eff1453e189fe5d5d4f49dde731 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 13 Dec 2024 16:21:44 -0800 Subject: [PATCH 4/5] 3.24 --- .../shared_preferences/shared_preferences/example/pubspec.yaml | 2 +- packages/shared_preferences/shared_preferences/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/example/pubspec.yaml b/packages/shared_preferences/shared_preferences/example/pubspec.yaml index 047a00031638..96753eed7955 100644 --- a/packages/shared_preferences/shared_preferences/example/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/example/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none environment: sdk: ^3.5.0 - flutter: ">=3.22.0" + flutter: ">=3.24.0" dependencies: flutter: diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 55d129f68cc3..46763dc105fa 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -7,7 +7,7 @@ version: 2.3.4 environment: sdk: ^3.5.0 - flutter: ">=3.22.0" + flutter: ">=3.24.0" flutter: plugin: From 5974b545d13d7bce22eb17bf905265b4e47bb015 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 2 Jan 2025 04:42:52 -0800 Subject: [PATCH 5/5] nits --- packages/shared_preferences/shared_preferences/README.md | 7 +++++-- .../shared_preferences/example/android/app/build.gradle | 4 ---- .../shared_preferences/example/lib/readme_excerpts.dart | 6 ++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/shared_preferences/shared_preferences/README.md b/packages/shared_preferences/shared_preferences/README.md index e8f655e598e8..ad6c7268eed8 100644 --- a/packages/shared_preferences/shared_preferences/README.md +++ b/packages/shared_preferences/shared_preferences/README.md @@ -55,8 +55,11 @@ In most cases you should use the default option of DataStore Preferences, as it However, in some cases you may need to interact with preferences that were written to SharedPreferences by code you don't control. To use the `Android SharedPreferences` backend, use the `SharedPreferencesAsyncAndroidOptions` when using [SharedPreferencesAsync] on Android. - - + +```dart +import 'package:shared_preferences_android/shared_preferences_android.dart'; +``` + ```dart const SharedPreferencesAsyncAndroidOptions options = SharedPreferencesAsyncAndroidOptions( diff --git a/packages/shared_preferences/shared_preferences/example/android/app/build.gradle b/packages/shared_preferences/shared_preferences/example/android/app/build.gradle index c5af65d2600a..4974b8ebc8eb 100644 --- a/packages/shared_preferences/shared_preferences/example/android/app/build.gradle +++ b/packages/shared_preferences/shared_preferences/example/android/app/build.gradle @@ -34,10 +34,6 @@ android { jvmTarget = '11' } - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - defaultConfig { applicationId "io.flutter.plugins.sharedpreferencesexample" minSdkVersion flutter.minSdkVersion diff --git a/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart b/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart index 4236a4339c94..3df203c16147 100644 --- a/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart +++ b/packages/shared_preferences/shared_preferences/example/lib/readme_excerpts.dart @@ -4,7 +4,9 @@ // ignore_for_file: public_member_api_docs, unused_local_variable, invalid_use_of_visible_for_testing_member import 'package:shared_preferences/shared_preferences.dart'; +// #docregion Android_Options1 import 'package:shared_preferences_android/shared_preferences_android.dart'; +// #enddocregion Android_Options1 Future readmeSnippets() async { // #docregion Write @@ -94,10 +96,10 @@ Future readmeTestSnippets() async { // #enddocregion Tests } -// #docregion Android_Options +// #docregion Android_Options2 const SharedPreferencesAsyncAndroidOptions options = SharedPreferencesAsyncAndroidOptions( backend: SharedPreferencesAndroidBackendLibrary.SharedPreferences, originalSharedPreferencesOptions: AndroidSharedPreferencesStoreOptions( fileName: 'the_name_of_a_file')); -// #enddocregion Android_Options +// #enddocregion Android_Options2