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 81708ac6532..4ab7bd2418c 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 bd9fd06dbc9..e8f655e598e 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 164bf3d57c0..c5af65d2600 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 032409d4901..4236a4339c9 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 cbf79d353af..e8bd2e683ed 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 6c715ff7e3a..2207be44574 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 e8bd2e683ed..047a0003163 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 2207be44574..55d129f68cc 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 047a0003163..96753eed795 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 55d129f68cc..46763dc105f 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 e8f655e598e..ad6c7268eed 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 c5af65d2600..4974b8ebc8e 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 4236a4339c9..3df203c1614 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