From 7d75af2c3f8a6dc7e4d48613174cb058123c8ebd Mon Sep 17 00:00:00 2001 From: Yegor Jbanov Date: Wed, 20 Nov 2019 12:54:53 -0800 Subject: [PATCH 1/3] add shared_preferences_platform_interface --- .../shared_preferences/example/android.iml | 12 -- .../contents.xcworkspacedata | 10 -- .../contents.xcworkspacedata | 10 -- .../example/shared_preferences_example.iml | 15 --- .../{ => shared_preferences}/CHANGELOG.md | 4 + .../{ => shared_preferences}/LICENSE | 0 .../{ => shared_preferences}/README.md | 0 .../android/build.gradle | 0 .../android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/settings.gradle | 0 .../android/src/main/AndroidManifest.xml | 0 .../MethodCallHandlerImpl.java | 0 .../SharedPreferencesPlugin.java | 0 .../example/README.md | 0 .../example/android/app/build.gradle | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../EmbeddingV1Activity.java | 0 .../EmbeddingV1ActivityTest.java | 0 .../MainActivity.java | 0 .../MainActivityTest.java | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../example/android/build.gradle | 0 .../example/android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../example/android/settings.gradle | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../example/ios/Flutter/Debug.xcconfig | 0 .../example/ios/Flutter/Release.xcconfig | 0 .../ios/Runner.xcodeproj/project.pbxproj | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../example/ios/Runner/AppDelegate.h | 0 .../example/ios/Runner/AppDelegate.m | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../example/ios/Runner/Info.plist | 0 .../example/ios/Runner/main.m | 0 .../example/lib/main.dart | 0 .../example/pubspec.yaml | 0 .../test_driver/shared_preferences_e2e.dart | 0 .../shared_preferences_e2e_test.dart | 0 .../ios/Assets/.gitkeep | 0 .../ios/Classes/SharedPreferencesPlugin.h | 0 .../ios/Classes/SharedPreferencesPlugin.m | 0 .../ios/shared_preferences.podspec | 0 .../lib/shared_preferences.dart | 0 .../{ => shared_preferences}/pubspec.yaml | 4 +- .../test/shared_preferences_test.dart | 0 .../CHANGELOG.md | 4 + .../LICENSE | 27 ++++ .../README.md | 25 ++++ .../method_channel_shared_preferences.dart | 61 +++++++++ ...shared_preferences_platform_interface.dart | 116 +++++++++++++++++ .../pubspec.yaml | 18 +++ ...ethod_channel_shared_preferences_test.dart | 120 ++++++++++++++++++ 75 files changed, 377 insertions(+), 49 deletions(-) delete mode 100644 packages/shared_preferences/example/android.iml delete mode 100644 packages/shared_preferences/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/shared_preferences/example/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/shared_preferences/example/shared_preferences_example.iml rename packages/shared_preferences/{ => shared_preferences}/CHANGELOG.md (98%) rename packages/shared_preferences/{ => shared_preferences}/LICENSE (100%) rename packages/shared_preferences/{ => shared_preferences}/README.md (100%) rename packages/shared_preferences/{ => shared_preferences}/android/build.gradle (100%) rename packages/shared_preferences/{ => shared_preferences}/android/gradle.properties (100%) rename packages/shared_preferences/{ => shared_preferences}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename packages/shared_preferences/{ => shared_preferences}/android/settings.gradle (100%) rename packages/shared_preferences/{ => shared_preferences}/android/src/main/AndroidManifest.xml (100%) rename packages/shared_preferences/{ => shared_preferences}/android/src/main/java/io/flutter/plugins/sharedpreferences/MethodCallHandlerImpl.java (100%) rename packages/shared_preferences/{ => shared_preferences}/android/src/main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java (100%) rename packages/shared_preferences/{ => shared_preferences}/example/README.md (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/build.gradle (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/gradle/wrapper/gradle-wrapper.properties (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/AndroidManifest.xml (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1Activity.java (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivity.java (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivityTest.java (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/build.gradle (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/gradle.properties (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/gradle/wrapper/gradle-wrapper.properties (100%) rename packages/shared_preferences/{ => shared_preferences}/example/android/settings.gradle (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Flutter/AppFrameworkInfo.plist (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Flutter/Debug.xcconfig (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Flutter/Release.xcconfig (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner.xcodeproj/project.pbxproj (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/AppDelegate.h (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/AppDelegate.m (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Base.lproj/Main.storyboard (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/Info.plist (100%) rename packages/shared_preferences/{ => shared_preferences}/example/ios/Runner/main.m (100%) rename packages/shared_preferences/{ => shared_preferences}/example/lib/main.dart (100%) rename packages/shared_preferences/{ => shared_preferences}/example/pubspec.yaml (100%) rename packages/shared_preferences/{ => shared_preferences}/example/test_driver/shared_preferences_e2e.dart (100%) rename packages/shared_preferences/{ => shared_preferences}/example/test_driver/shared_preferences_e2e_test.dart (100%) rename packages/shared_preferences/{ => shared_preferences}/ios/Assets/.gitkeep (100%) rename packages/shared_preferences/{ => shared_preferences}/ios/Classes/SharedPreferencesPlugin.h (100%) rename packages/shared_preferences/{ => shared_preferences}/ios/Classes/SharedPreferencesPlugin.m (100%) rename packages/shared_preferences/{ => shared_preferences}/ios/shared_preferences.podspec (100%) rename packages/shared_preferences/{ => shared_preferences}/lib/shared_preferences.dart (100%) rename packages/shared_preferences/{ => shared_preferences}/pubspec.yaml (92%) rename packages/shared_preferences/{ => shared_preferences}/test/shared_preferences_test.dart (100%) create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/LICENSE create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/README.md create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml create mode 100644 packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart diff --git a/packages/shared_preferences/example/android.iml b/packages/shared_preferences/example/android.iml deleted file mode 100644 index 462b903e05b6..000000000000 --- a/packages/shared_preferences/example/android.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/packages/shared_preferences/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/shared_preferences/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c74e..000000000000 --- a/packages/shared_preferences/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/packages/shared_preferences/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/shared_preferences/example/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c74e..000000000000 --- a/packages/shared_preferences/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/packages/shared_preferences/example/shared_preferences_example.iml b/packages/shared_preferences/example/shared_preferences_example.iml deleted file mode 100644 index 9d5dae19540c..000000000000 --- a/packages/shared_preferences/example/shared_preferences_example.iml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md similarity index 98% rename from packages/shared_preferences/CHANGELOG.md rename to packages/shared_preferences/shared_preferences/CHANGELOG.md index 083d2b9b658a..15a50475078d 100644 --- a/packages/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.4+7 + +* Restructure the project for Web support. + ## 0.5.4+6 * Add missing documentation and a lint to prevent further undocumented APIs. diff --git a/packages/shared_preferences/LICENSE b/packages/shared_preferences/shared_preferences/LICENSE similarity index 100% rename from packages/shared_preferences/LICENSE rename to packages/shared_preferences/shared_preferences/LICENSE diff --git a/packages/shared_preferences/README.md b/packages/shared_preferences/shared_preferences/README.md similarity index 100% rename from packages/shared_preferences/README.md rename to packages/shared_preferences/shared_preferences/README.md diff --git a/packages/shared_preferences/android/build.gradle b/packages/shared_preferences/shared_preferences/android/build.gradle similarity index 100% rename from packages/shared_preferences/android/build.gradle rename to packages/shared_preferences/shared_preferences/android/build.gradle diff --git a/packages/shared_preferences/android/gradle.properties b/packages/shared_preferences/shared_preferences/android/gradle.properties similarity index 100% rename from packages/shared_preferences/android/gradle.properties rename to packages/shared_preferences/shared_preferences/android/gradle.properties diff --git a/packages/shared_preferences/android/gradle/wrapper/gradle-wrapper.properties b/packages/shared_preferences/shared_preferences/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/shared_preferences/android/gradle/wrapper/gradle-wrapper.properties rename to packages/shared_preferences/shared_preferences/android/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/shared_preferences/android/settings.gradle b/packages/shared_preferences/shared_preferences/android/settings.gradle similarity index 100% rename from packages/shared_preferences/android/settings.gradle rename to packages/shared_preferences/shared_preferences/android/settings.gradle diff --git a/packages/shared_preferences/android/src/main/AndroidManifest.xml b/packages/shared_preferences/shared_preferences/android/src/main/AndroidManifest.xml similarity index 100% rename from packages/shared_preferences/android/src/main/AndroidManifest.xml rename to packages/shared_preferences/shared_preferences/android/src/main/AndroidManifest.xml diff --git a/packages/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/MethodCallHandlerImpl.java b/packages/shared_preferences/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/MethodCallHandlerImpl.java similarity index 100% rename from packages/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/MethodCallHandlerImpl.java rename to packages/shared_preferences/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/MethodCallHandlerImpl.java diff --git a/packages/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java b/packages/shared_preferences/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java similarity index 100% rename from packages/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java rename to packages/shared_preferences/shared_preferences/android/src/main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java diff --git a/packages/shared_preferences/example/README.md b/packages/shared_preferences/shared_preferences/example/README.md similarity index 100% rename from packages/shared_preferences/example/README.md rename to packages/shared_preferences/shared_preferences/example/README.md diff --git a/packages/shared_preferences/example/android/app/build.gradle b/packages/shared_preferences/shared_preferences/example/android/app/build.gradle similarity index 100% rename from packages/shared_preferences/example/android/app/build.gradle rename to packages/shared_preferences/shared_preferences/example/android/app/build.gradle diff --git a/packages/shared_preferences/example/android/app/gradle/wrapper/gradle-wrapper.properties b/packages/shared_preferences/shared_preferences/example/android/app/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/shared_preferences/example/android/app/gradle/wrapper/gradle-wrapper.properties rename to packages/shared_preferences/shared_preferences/example/android/app/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/shared_preferences/example/android/app/src/main/AndroidManifest.xml b/packages/shared_preferences/shared_preferences/example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/AndroidManifest.xml rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/AndroidManifest.xml diff --git a/packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1Activity.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1Activity.java similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1Activity.java rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1Activity.java diff --git a/packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/EmbeddingV1ActivityTest.java diff --git a/packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivity.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivity.java similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivity.java rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivity.java diff --git a/packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivityTest.java b/packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivityTest.java similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivityTest.java rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/java/io/flutter/plugins/sharedpreferencesexample/MainActivityTest.java diff --git a/packages/shared_preferences/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/packages/shared_preferences/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/packages/shared_preferences/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/packages/shared_preferences/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/packages/shared_preferences/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from packages/shared_preferences/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to packages/shared_preferences/shared_preferences/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/packages/shared_preferences/example/android/build.gradle b/packages/shared_preferences/shared_preferences/example/android/build.gradle similarity index 100% rename from packages/shared_preferences/example/android/build.gradle rename to packages/shared_preferences/shared_preferences/example/android/build.gradle diff --git a/packages/shared_preferences/example/android/gradle.properties b/packages/shared_preferences/shared_preferences/example/android/gradle.properties similarity index 100% rename from packages/shared_preferences/example/android/gradle.properties rename to packages/shared_preferences/shared_preferences/example/android/gradle.properties diff --git a/packages/shared_preferences/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/shared_preferences/shared_preferences/example/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/shared_preferences/example/android/gradle/wrapper/gradle-wrapper.properties rename to packages/shared_preferences/shared_preferences/example/android/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/shared_preferences/example/android/settings.gradle b/packages/shared_preferences/shared_preferences/example/android/settings.gradle similarity index 100% rename from packages/shared_preferences/example/android/settings.gradle rename to packages/shared_preferences/shared_preferences/example/android/settings.gradle diff --git a/packages/shared_preferences/example/ios/Flutter/AppFrameworkInfo.plist b/packages/shared_preferences/shared_preferences/example/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from packages/shared_preferences/example/ios/Flutter/AppFrameworkInfo.plist rename to packages/shared_preferences/shared_preferences/example/ios/Flutter/AppFrameworkInfo.plist diff --git a/packages/shared_preferences/example/ios/Flutter/Debug.xcconfig b/packages/shared_preferences/shared_preferences/example/ios/Flutter/Debug.xcconfig similarity index 100% rename from packages/shared_preferences/example/ios/Flutter/Debug.xcconfig rename to packages/shared_preferences/shared_preferences/example/ios/Flutter/Debug.xcconfig diff --git a/packages/shared_preferences/example/ios/Flutter/Release.xcconfig b/packages/shared_preferences/shared_preferences/example/ios/Flutter/Release.xcconfig similarity index 100% rename from packages/shared_preferences/example/ios/Flutter/Release.xcconfig rename to packages/shared_preferences/shared_preferences/example/ios/Flutter/Release.xcconfig diff --git a/packages/shared_preferences/example/ios/Runner.xcodeproj/project.pbxproj b/packages/shared_preferences/shared_preferences/example/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from packages/shared_preferences/example/ios/Runner.xcodeproj/project.pbxproj rename to packages/shared_preferences/shared_preferences/example/ios/Runner.xcodeproj/project.pbxproj diff --git a/packages/shared_preferences/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/shared_preferences/shared_preferences/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from packages/shared_preferences/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to packages/shared_preferences/shared_preferences/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/packages/shared_preferences/example/ios/Runner/AppDelegate.h b/packages/shared_preferences/shared_preferences/example/ios/Runner/AppDelegate.h similarity index 100% rename from packages/shared_preferences/example/ios/Runner/AppDelegate.h rename to packages/shared_preferences/shared_preferences/example/ios/Runner/AppDelegate.h diff --git a/packages/shared_preferences/example/ios/Runner/AppDelegate.m b/packages/shared_preferences/shared_preferences/example/ios/Runner/AppDelegate.m similarity index 100% rename from packages/shared_preferences/example/ios/Runner/AppDelegate.m rename to packages/shared_preferences/shared_preferences/example/ios/Runner/AppDelegate.m diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/packages/shared_preferences/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/shared_preferences/shared_preferences/example/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/packages/shared_preferences/example/ios/Runner/Base.lproj/Main.storyboard b/packages/shared_preferences/shared_preferences/example/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Base.lproj/Main.storyboard rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Base.lproj/Main.storyboard diff --git a/packages/shared_preferences/example/ios/Runner/Info.plist b/packages/shared_preferences/shared_preferences/example/ios/Runner/Info.plist similarity index 100% rename from packages/shared_preferences/example/ios/Runner/Info.plist rename to packages/shared_preferences/shared_preferences/example/ios/Runner/Info.plist diff --git a/packages/shared_preferences/example/ios/Runner/main.m b/packages/shared_preferences/shared_preferences/example/ios/Runner/main.m similarity index 100% rename from packages/shared_preferences/example/ios/Runner/main.m rename to packages/shared_preferences/shared_preferences/example/ios/Runner/main.m diff --git a/packages/shared_preferences/example/lib/main.dart b/packages/shared_preferences/shared_preferences/example/lib/main.dart similarity index 100% rename from packages/shared_preferences/example/lib/main.dart rename to packages/shared_preferences/shared_preferences/example/lib/main.dart diff --git a/packages/shared_preferences/example/pubspec.yaml b/packages/shared_preferences/shared_preferences/example/pubspec.yaml similarity index 100% rename from packages/shared_preferences/example/pubspec.yaml rename to packages/shared_preferences/shared_preferences/example/pubspec.yaml diff --git a/packages/shared_preferences/example/test_driver/shared_preferences_e2e.dart b/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e.dart similarity index 100% rename from packages/shared_preferences/example/test_driver/shared_preferences_e2e.dart rename to packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e.dart diff --git a/packages/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart b/packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart similarity index 100% rename from packages/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart rename to packages/shared_preferences/shared_preferences/example/test_driver/shared_preferences_e2e_test.dart diff --git a/packages/shared_preferences/ios/Assets/.gitkeep b/packages/shared_preferences/shared_preferences/ios/Assets/.gitkeep similarity index 100% rename from packages/shared_preferences/ios/Assets/.gitkeep rename to packages/shared_preferences/shared_preferences/ios/Assets/.gitkeep diff --git a/packages/shared_preferences/ios/Classes/SharedPreferencesPlugin.h b/packages/shared_preferences/shared_preferences/ios/Classes/SharedPreferencesPlugin.h similarity index 100% rename from packages/shared_preferences/ios/Classes/SharedPreferencesPlugin.h rename to packages/shared_preferences/shared_preferences/ios/Classes/SharedPreferencesPlugin.h diff --git a/packages/shared_preferences/ios/Classes/SharedPreferencesPlugin.m b/packages/shared_preferences/shared_preferences/ios/Classes/SharedPreferencesPlugin.m similarity index 100% rename from packages/shared_preferences/ios/Classes/SharedPreferencesPlugin.m rename to packages/shared_preferences/shared_preferences/ios/Classes/SharedPreferencesPlugin.m diff --git a/packages/shared_preferences/ios/shared_preferences.podspec b/packages/shared_preferences/shared_preferences/ios/shared_preferences.podspec similarity index 100% rename from packages/shared_preferences/ios/shared_preferences.podspec rename to packages/shared_preferences/shared_preferences/ios/shared_preferences.podspec diff --git a/packages/shared_preferences/lib/shared_preferences.dart b/packages/shared_preferences/shared_preferences/lib/shared_preferences.dart similarity index 100% rename from packages/shared_preferences/lib/shared_preferences.dart rename to packages/shared_preferences/shared_preferences/lib/shared_preferences.dart diff --git a/packages/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml similarity index 92% rename from packages/shared_preferences/pubspec.yaml rename to packages/shared_preferences/shared_preferences/pubspec.yaml index 89326d9a3aa9..62853949d055 100644 --- a/packages/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -2,8 +2,8 @@ name: shared_preferences description: Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. author: Flutter Team -homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences -version: 0.5.4+6 +homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences +version: 0.5.4+7 flutter: plugin: diff --git a/packages/shared_preferences/test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart similarity index 100% rename from packages/shared_preferences/test/shared_preferences_test.dart rename to packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart diff --git a/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md b/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md new file mode 100644 index 000000000000..5797967fe365 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md @@ -0,0 +1,4 @@ +## 1.0.0 + +* Initial release. Contains the interface and an implementation based on + method channels. diff --git a/packages/shared_preferences/shared_preferences_platform_interface/LICENSE b/packages/shared_preferences/shared_preferences_platform_interface/LICENSE new file mode 100644 index 000000000000..000b4618d2bd --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/LICENSE @@ -0,0 +1,27 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/shared_preferences/shared_preferences_platform_interface/README.md b/packages/shared_preferences/shared_preferences_platform_interface/README.md new file mode 100644 index 000000000000..301ba68ea361 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/README.md @@ -0,0 +1,25 @@ +# shared_preferences_platform_interface + +A common platform interface for the [`shared_preferences`][1] plugin. + +This interface allows platform-specific implementations of the `shared_preferences` +plugin, as well as the plugin itself, to ensure they are supporting the +same interface. + +# Usage + +To implement a new platform-specific implementation of `shared_preferences`, extend +[`SharedPreferencesPlatform`][2] with an implementation that performs the +platform-specific behavior, and when you register your plugin, set the default +`SharedPreferencesLoader` by calling the `SharedPreferencesPlatform.loader` setter. + +# Note on breaking changes + +Strongly prefer non-breaking changes (such as adding a method to the interface) +over breaking changes for this package. + +See https://flutter.dev/go/platform-interface-breaking-changes for a discussion +on why a less-clean interface is preferable to a breaking change. + +[1]: ../shared_preferences +[2]: lib/shared_preferences_platform_interface.dart diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart new file mode 100644 index 000000000000..792d0a61767e --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart @@ -0,0 +1,61 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/services.dart'; + +import 'shared_preferences_platform_interface.dart'; + +const MethodChannel _kChannel = + MethodChannel('plugins.flutter.io/shared_preferences'); + +/// Wraps NSUserDefaults (on iOS) and SharedPreferences (on Android), providing +/// a persistent store for simple data. +/// +/// Data is persisted to disk asynchronously. +class MethodChannelSharedPreferencesStore + extends SharedPreferencesStorePlatform { + @override + Future remove(String key) { + return _invokeBoolMethod('remove', { + 'key': key, + }); + } + + @override + Future setValue(String valueType, String key, Object value) { + return _invokeBoolMethod('set$valueType', { + 'key': key, + 'value': value, + }); + } + + Future _invokeBoolMethod(String method, Map params) { + return _kChannel + .invokeMethod(method, params) + // TODO(yjbanov): I copied this from the original + // shared_preferences.dart implementation, but I + // actually do not know why it's necessary to pipe the + // result through an identity function. + // + // Source: https://github.com/flutter/plugins/blob/3a87296a40a2624d200917d58f036baa9fb18df8/packages/shared_preferences/lib/shared_preferences.dart#L134 + .then((dynamic result) => result); + } + + @override + Future clear() { + return _kChannel.invokeMethod('clear'); + } + + @override + Future commit() { + return _kChannel.invokeMethod('commit'); + } + + @override + Future> getAll() { + return _kChannel.invokeMapMethod('getAll'); + } +} diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart new file mode 100644 index 000000000000..02911f3b5aa4 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart @@ -0,0 +1,116 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:meta/meta.dart'; + +import 'method_channel_shared_preferences.dart'; + +/// The interface that implementations of shared_preferences must implement. +/// +/// Platform implementations should extend this class rather than implement it as `shared_preferences` +/// does not consider newly added methods to be breaking changes. Extending this class +/// (using `extends`) ensures that the subclass will get the default implementation, while +/// platform implementations that `implements` this interface will be broken by newly added +/// [SharedPreferencesStorePlatform] methods. +abstract class SharedPreferencesStorePlatform { + /// The default instance of [SharedPreferencesStorePlatform] to use. + /// + /// Defaults to [MethodChannelSharedPreferencesStore]. + static SharedPreferencesStorePlatform get instance => _instance; + + /// Platform-specific plugins should set this with their own platform-specific + /// class that extends [SharedPreferencesStorePlatform] when they register themselves. + static set instance(SharedPreferencesStorePlatform value) { + try { + instance._verifyProvidesDefaultImplementations(); + _instance = value; + } on NoSuchMethodError catch (_) {} + } + + static SharedPreferencesStorePlatform _instance = + MethodChannelSharedPreferencesStore(); + + /// Only mock implementations should set this to true. + /// + /// Mockito mocks are implementing this class with `implements` which is forbidden for anything + /// other than mocks (see class docs). This property provides a backdoor for mockito mocks to + /// skip the verification that the class isn't implemented with `implements`. + @visibleForTesting + bool get isMock => false; + + /// Removes the value associated with the [key]. + Future remove(String key); + + /// Stores the [value] associated with the [key]. + /// + /// The [valueType] must match the type of [value] as follows: + /// + /// * Value type "Bool" must be passed if the value is of type `bool`. + /// * Value type "Double" must be passed if the value is of type `double`. + /// * Value type "Int" must be passed if the value is of type `int`. + /// * Value type "String" must be passed if the value is of type `String`. + /// * Value type "StringList" must be passed if the value is of type `List`. + Future setValue(String valueType, String key, Object value); + + /// This does not do anything. + /// + /// It is only here for backwards-compatibility. + Future commit(); + + /// Removes all keys and values in the store. + Future clear(); + + /// Returns all key/value pairs persisted in this store. + Future> getAll(); + + // This method makes sure that SharedPreferencesStorePlatform isn't implemented with `implements`. + // + // See class doc for more details on why implementing this class is forbidden. + // + // This private method is called by the instance setter, which fails if the class is + // implemented with `implements`. + void _verifyProvidesDefaultImplementations() {} +} + +/// Stores data in memory. +/// +/// Data does not persist across application restarts. This is useful in unit-tests. +class InMemorySharedPreferencesStore extends SharedPreferencesStorePlatform { + InMemorySharedPreferencesStore.empty() : _data = {}; + + InMemorySharedPreferencesStore.withData(Map data) + : _data = Map.from(data); + + final Map _data; + + @override + Future clear() async { + _data.clear(); + return true; + } + + @override + Future commit() async { + return true; + } + + @override + Future> getAll() async { + return Map.from(_data); + } + + @override + Future remove(String key) async { + _data.remove(key); + return true; + } + + @override + Future setValue(String valueType, String key, Object value) async { + _data[key] = value; + return true; + } +} diff --git a/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml b/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml new file mode 100644 index 000000000000..92efc896f777 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml @@ -0,0 +1,18 @@ +name: shared_preferences_platform_interface +description: A common platform interface for the shared_preferences plugin. +author: Flutter Team +homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences_platform_interface +version: 1.0.0 + +dependencies: + meta: ^1.0.4 + flutter: + sdk: flutter + +dev_dependencies: + flutter_test: + sdk: flutter + +environment: + sdk: ">=2.0.0-dev.28.0 <3.0.0" + flutter: ">=1.6.7 <2.0.0" diff --git a/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart b/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart new file mode 100644 index 000000000000..a20c8ea3ab4b --- /dev/null +++ b/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart @@ -0,0 +1,120 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:shared_preferences_platform_interface/shared_preferences_platform_interface.dart'; +import 'package:shared_preferences_platform_interface/method_channel_shared_preferences.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group(MethodChannelSharedPreferencesStore, () { + const MethodChannel channel = MethodChannel( + 'plugins.flutter.io/shared_preferences', + ); + + const Map kTestValues = { + 'flutter.String': 'hello world', + 'flutter.Bool': true, + 'flutter.Int': 42, + 'flutter.Double': 3.14159, + 'flutter.StringList': ['foo', 'bar'], + }; + + InMemorySharedPreferencesStore testData; + + final List log = []; + MethodChannelSharedPreferencesStore store; + + setUp(() async { + testData = InMemorySharedPreferencesStore.empty(); + + channel.setMockMethodCallHandler((MethodCall methodCall) async { + log.add(methodCall); + if (methodCall.method == 'getAll') { + return await testData.getAll(); + } + if (methodCall.method == 'remove') { + final String key = methodCall.arguments['key']; + return await testData.remove(key); + } + if (methodCall.method == 'clear') { + return await testData.clear(); + } + if (methodCall.method == 'commit') { + return await testData.commit(); + } + final RegExp setterRegExp = RegExp(r'set(.*)'); + final Match match = setterRegExp.matchAsPrefix(methodCall.method); + if (match.groupCount == 1) { + final String valueType = match.group(1); + final String key = methodCall.arguments['key']; + final Object value = methodCall.arguments['value']; + return await testData.setValue(valueType, key, value); + } + fail('Unexpected method call: ${methodCall.method}'); + }); + store = MethodChannelSharedPreferencesStore(); + log.clear(); + }); + + tearDown(() async { + await testData.clear(); + store = null; + testData = null; + }); + + test('getAll', () async { + testData = InMemorySharedPreferencesStore.withData(kTestValues); + expect(await store.getAll(), kTestValues); + expect(log.single.method, 'getAll'); + }); + + test('remove', () async { + testData = InMemorySharedPreferencesStore.withData(kTestValues); + expect(await store.remove('flutter.String'), true); + expect(await store.remove('flutter.Bool'), true); + expect(await store.remove('flutter.Int'), true); + expect(await store.remove('flutter.Double'), true); + expect(await testData.getAll(), { + 'flutter.StringList': ['foo', 'bar'], + }); + + expect(log, hasLength(4)); + for (MethodCall call in log) { + expect(call.method, 'remove'); + } + }); + + test('setValue', () async { + expect(await testData.getAll(), isEmpty); + for (String key in kTestValues.keys) { + final dynamic value = kTestValues[key]; + expect(await store.setValue(key.split('.').last, key, value), true); + } + expect(await testData.getAll(), kTestValues); + + expect(log, hasLength(5)); + expect(log[0].method, 'setString'); + expect(log[1].method, 'setBool'); + expect(log[2].method, 'setInt'); + expect(log[3].method, 'setDouble'); + expect(log[4].method, 'setStringList'); + }); + + test('clear', () async { + testData = InMemorySharedPreferencesStore.withData(kTestValues); + expect(await testData.getAll(), isNotEmpty); + expect(await store.clear(), true); + expect(await testData.getAll(), isEmpty); + expect(log.single.method, 'clear'); + }); + + test('commit', () async { + expect(await store.commit(), true); + expect(log.single.method, 'commit'); + }); + }); +} From fd3518df2cf3bf7324999755303b60e1449e3092 Mon Sep 17 00:00:00 2001 From: Yegor Jbanov Date: Mon, 25 Nov 2019 10:31:29 -0800 Subject: [PATCH 2/3] add dartdocs --- .../lib/shared_preferences_platform_interface.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart index 02911f3b5aa4..1fb34c5b56a2 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart @@ -79,8 +79,10 @@ abstract class SharedPreferencesStorePlatform { /// /// Data does not persist across application restarts. This is useful in unit-tests. class InMemorySharedPreferencesStore extends SharedPreferencesStorePlatform { + /// Instantiates an empty in-memory preferences store. InMemorySharedPreferencesStore.empty() : _data = {}; + /// Instantiates an in-memory preferences store containing a copy of [data]. InMemorySharedPreferencesStore.withData(Map data) : _data = Map.from(data); From c673862f97785bfb9bdf27e21bd6a14876c56763 Mon Sep 17 00:00:00 2001 From: Yegor Jbanov Date: Mon, 25 Nov 2019 17:04:02 -0800 Subject: [PATCH 3/3] remove commit() --- .../lib/method_channel_shared_preferences.dart | 5 ----- .../lib/shared_preferences_platform_interface.dart | 10 ---------- .../test/method_channel_shared_preferences_test.dart | 8 -------- 3 files changed, 23 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart index 792d0a61767e..66009a5caf14 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/method_channel_shared_preferences.dart @@ -49,11 +49,6 @@ class MethodChannelSharedPreferencesStore return _kChannel.invokeMethod('clear'); } - @override - Future commit() { - return _kChannel.invokeMethod('commit'); - } - @override Future> getAll() { return _kChannel.invokeMapMethod('getAll'); diff --git a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart index 1fb34c5b56a2..ff42f6357e74 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/lib/shared_preferences_platform_interface.dart @@ -55,11 +55,6 @@ abstract class SharedPreferencesStorePlatform { /// * Value type "StringList" must be passed if the value is of type `List`. Future setValue(String valueType, String key, Object value); - /// This does not do anything. - /// - /// It is only here for backwards-compatibility. - Future commit(); - /// Removes all keys and values in the store. Future clear(); @@ -94,11 +89,6 @@ class InMemorySharedPreferencesStore extends SharedPreferencesStorePlatform { return true; } - @override - Future commit() async { - return true; - } - @override Future> getAll() async { return Map.from(_data); diff --git a/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart b/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart index a20c8ea3ab4b..4cc79b058675 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart +++ b/packages/shared_preferences/shared_preferences_platform_interface/test/method_channel_shared_preferences_test.dart @@ -43,9 +43,6 @@ void main() { if (methodCall.method == 'clear') { return await testData.clear(); } - if (methodCall.method == 'commit') { - return await testData.commit(); - } final RegExp setterRegExp = RegExp(r'set(.*)'); final Match match = setterRegExp.matchAsPrefix(methodCall.method); if (match.groupCount == 1) { @@ -111,10 +108,5 @@ void main() { expect(await testData.getAll(), isEmpty); expect(log.single.method, 'clear'); }); - - test('commit', () async { - expect(await store.commit(), true); - expect(log.single.method, 'commit'); - }); }); }