Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

[shared_preferences] Shared preferences linux endorsement #2864

Conversation

stuartmorgan-g
Copy link
Contributor

@stuartmorgan-g stuartmorgan-g commented Jul 7, 2020

Description

Endorses shared_preferences_linux.

Since shared_preferences_linux is pure Dart, this uses manual registration of the Linux implementation. It is similar to the solution used for path_provider, but improves on it by more narrowly tailoring the registration to cases where another registration hasn't already been done, and only checking the first time, thus avoiding the need for a variable to override it.

Updates shared_preferences_linux to depend on path_provider_linux rather than path_provider, to avoid adding unnecessary native plugin dependencies to other platforms.

Also adds a driver test for shared_preference_linux, which I missed in reviewing the initial shared_preferences_linux landing.

Related Issues

Fixes flutter/flutter#41720

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (flutter analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
  • I updated CHANGELOG.md to add a description of the change.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
  • No, this is not a breaking change.

@stuartmorgan-g stuartmorgan-g requested a review from cyanglaz July 7, 2020 22:36
@stuartmorgan-g stuartmorgan-g changed the title Shared preferences linux endorsement [shared_preferences] Shared preferences linux endorsement Jul 7, 2020
@stuartmorgan-g
Copy link
Contributor Author

Review notes:

  • The linux/example/ files are just generated from the flutter create template without changes.
  • The test_driver files are duplicated verbatim from existing platform implementations.

Copy link
Contributor

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Now that plugin_tools are updated, try using path_provider again. Uses
path_provider_linux directly to avoid having an actual plugin dependency
for other platforms (e.g., an Android+Linux app shouldn't need to build
and ship the Android path_provider plugin just because the project uses
shared_preferences).
@stuartmorgan-g
Copy link
Contributor Author

In case there are still dependency conflict issues I tried a version that uses XDG directly to avoid the problem; that passed all tests. Now that the tools are updated I'm trying going back to path_provider, although this time I'm using path_provider_linux directly to reduce the transitive plugin burden on other platforms. (That was something I had thought about a while back, but slipped my mind when reviewing shared_preferences_linux so wasn't in the initial version.)

@stuartmorgan-g stuartmorgan-g merged commit 3b931d0 into flutter:master Jul 8, 2020
@stuartmorgan-g stuartmorgan-g deleted the shared_preferences_linux_endorsement branch July 8, 2020 04:01
agent3bood pushed a commit to agent3bood/flutter-plugins that referenced this pull request Jul 10, 2020
Endorses shared_preferences_linux.

Since shared_preferences_linux is pure Dart, this uses manual registration of the Linux implementation. It is similar to the solution used for path_provider, but improves on it by more narrowly tailoring the registration to cases where another registration hasn't already been done, and only checking the first time, thus avoiding the need for a variable to override it.

Updates shared_preferences_linux to depend on path_provider_linux rather than path_provider, to avoid adding unnecessary native plugin dependencies to other platforms.

Also adds a driver test for shared_preference_linux, which I missed in reviewing the initial shared_preferences_linux landing.
jorgefspereira pushed a commit to jorgefspereira/plugins_flutter that referenced this pull request Oct 10, 2020
Endorses shared_preferences_linux.

Since shared_preferences_linux is pure Dart, this uses manual registration of the Linux implementation. It is similar to the solution used for path_provider, but improves on it by more narrowly tailoring the registration to cases where another registration hasn't already been done, and only checking the first time, thus avoiding the need for a variable to override it.

Updates shared_preferences_linux to depend on path_provider_linux rather than path_provider, to avoid adding unnecessary native plugin dependencies to other platforms.

Also adds a driver test for shared_preference_linux, which I missed in reviewing the initial shared_preferences_linux landing.
FlutterSu pushed a commit to FlutterSu/flutter-plugins that referenced this pull request Nov 20, 2020
Endorses shared_preferences_linux.

Since shared_preferences_linux is pure Dart, this uses manual registration of the Linux implementation. It is similar to the solution used for path_provider, but improves on it by more narrowly tailoring the registration to cases where another registration hasn't already been done, and only checking the first time, thus avoiding the need for a variable to override it.

Updates shared_preferences_linux to depend on path_provider_linux rather than path_provider, to avoid adding unnecessary native plugin dependencies to other platforms.

Also adds a driver test for shared_preference_linux, which I missed in reviewing the initial shared_preferences_linux landing.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[shared_preferences] Add Linux support
3 participants