-
Notifications
You must be signed in to change notification settings - Fork 3.3k
[shared_preferences] Fix a late initialized error with the example app #8540
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
I wasn't sure if I needed to update the pubspec version because I added a changelog entry. Happy to revert the pubspec change if need be, just let me know. |
I'm not 100% sure, but I think this does need a version change. You should check out the changelog style guide. https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog-style |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just two little things then it's good to land
packages/shared_preferences/shared_preferences/example/test/example_app_test.dart
Outdated
Show resolved
Hide resolved
From triage: Is fixing the failing unit test on your radar? |
From triage: @kenzieschmoll Ping on the status of this PR? |
// Note: this code is duplicated in | ||
// shared_preferences/test/shared_preferences_async_test.dart. Since we cannot | ||
// import the relative path ../../test/shared_preferences_async_test.dart on the | ||
// web platform, we had to copy it here for use in this test library. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a way to put this code somewhere that can be imported in both locations that isn't exported to users?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Short of creating a shared package for testing utilities (which seems overkill just to share code with the example app test), I'm not sure how else to share this code.
I'm not entirely sure why the relative path can be imported successfully from a test for native platforms but not for the web platform. CC @jakemac53 do you know if this behavior is expected from the test package for this case?
Another option is to add TestOn('vm')
here so that this test does not run for the web platform.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is expected yes, the way apps are hosted on the web we have no way to access URIs outside of the package.
The "root" of the server is either the test directory or the package directory (can't remember which), so you can only access things from the current package and then package: URIs (via synthetic /packages/ paths).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These sorts of relative paths also really shouldn't be used anyways, they can easily be broken (that file could have dependencies you don't have for instance, and pub won't be able to resolve that for you).
The solution is a shared testing package (no need to publish it).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tarrinneal are you okay landing this with a todo to create a shared testing package or do we need to do that as part of this PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might as well :)
flutter/packages@125c117...07496eb 2025-04-02 [email protected] [multicast_dns] MDnsClient::listen supports onError callback (flutter/packages#8888) 2025-04-02 [email protected] Upgrade tests to use Xcode 16 and iOS 18 (flutter/packages#8968) 2025-04-01 [email protected] Manual roll Flutter from 1d954f4 to 05b5e79 (225 revisions) (flutter/packages#8960) 2025-04-01 [email protected] Drop deprecated HTML head meta tags (flutter/packages#8970) 2025-04-01 [email protected] Adjust PR checklist formatter discussion (flutter/packages#8924) 2025-04-01 [email protected] Update CODEOWNERS username (flutter/packages#8933) 2025-04-01 [email protected] [flutter_markdown] Added sizedImageBuilder to Markdown widget (flutter/packages#6739) 2025-04-01 [email protected] [google_maps_flutter] Skip impl copy of iOS tests (flutter/packages#8975) 2025-04-01 [email protected] [google_maps_flutter] Skip more hanging iOS tests (flutter/packages#8967) 2025-04-01 [email protected] [url_launcher] When not fully loaded, clicking close causes the callback to not be triggered correctly. (flutter/packages#8582) 2025-04-01 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 2 (flutter/packages#8892) 2025-03-31 [email protected] [webview_flutter] Skip flaky legacy tests on iOS (flutter/packages#8911) 2025-03-31 [email protected] [camera_android] Don't override default fps range when not recording (flutter/packages#8891) 2025-03-31 [email protected] [google_maps_flutter] Fix typo and remove duplicitous CHANGELOG entry (flutter/packages#8754) 2025-03-31 [email protected] [extension_gsi] Support the latest version of googleapis_auth (flutter/packages#8931) 2025-03-31 49699333+dependabot[bot]@users.noreply.github.com [dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in /packages/pigeon/platform_tests/test_plugin/android (flutter/packages#8955) 2025-03-31 [email protected] [webview_flutter_wkwebview] Fixes crash when sending undefined message via javascript channel (flutter/packages#8776) 2025-03-31 49699333+dependabot[bot]@users.noreply.github.com [dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in /packages/pigeon/platform_tests/alternate_language_test_plugin/android (flutter/packages#8946) 2025-03-31 [email protected] [interactive_media_ads] Fixes `AdEventType`s not triggering on iOS in release mode (flutter/packages#8918) 2025-03-31 [email protected] [google_maps_flutter] Skip test that hangs iOS CI (flutter/packages#8958) 2025-03-28 [email protected] Manual roll Flutter from b16430b to 1d954f4 (114 revisions) (flutter/packages#8922) 2025-03-28 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 3 (flutter/packages#8912) 2025-03-27 [email protected] Use a more deterministic way of waiting for ad widgets to be ready. (flutter/packages#8920) 2025-03-27 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 1 (flutter/packages#8890) 2025-03-27 [email protected] [pigeon] correct usage of extended generics in generator methods (flutter/packages#8910) 2025-03-27 [email protected] [video_player] Fix layout issue caused by `Transform.rotate` not affecting space calculation. (flutter/packages#8685) 2025-03-27 [email protected] [shared_preferences] Fix a late initialized error with the example app (flutter/packages#8540) 2025-03-26 [email protected] [various] Disable sandbox in Chrome dart tests (flutter/packages#8909) 2025-03-25 [email protected] [tool] Move changed file detection to base command class (flutter/packages#8730) 2025-03-25 [email protected] [Camera] Add lens type information (iOS) (flutter/packages#8723) 2025-03-25 [email protected] [pigeon] kotlin equality methods (flutter/packages#8887) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --------- Co-authored-by: Maurice Parrish <[email protected]>
flutter/packages@125c117...07496eb 2025-04-02 [email protected] [multicast_dns] MDnsClient::listen supports onError callback (flutter/packages#8888) 2025-04-02 [email protected] Upgrade tests to use Xcode 16 and iOS 18 (flutter/packages#8968) 2025-04-01 [email protected] Manual roll Flutter from 1d954f4 to 05b5e79 (225 revisions) (flutter/packages#8960) 2025-04-01 [email protected] Drop deprecated HTML head meta tags (flutter/packages#8970) 2025-04-01 [email protected] Adjust PR checklist formatter discussion (flutter/packages#8924) 2025-04-01 [email protected] Update CODEOWNERS username (flutter/packages#8933) 2025-04-01 [email protected] [flutter_markdown] Added sizedImageBuilder to Markdown widget (flutter/packages#6739) 2025-04-01 [email protected] [google_maps_flutter] Skip impl copy of iOS tests (flutter/packages#8975) 2025-04-01 [email protected] [google_maps_flutter] Skip more hanging iOS tests (flutter/packages#8967) 2025-04-01 [email protected] [url_launcher] When not fully loaded, clicking close causes the callback to not be triggered correctly. (flutter/packages#8582) 2025-04-01 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 2 (flutter/packages#8892) 2025-03-31 [email protected] [webview_flutter] Skip flaky legacy tests on iOS (flutter/packages#8911) 2025-03-31 [email protected] [camera_android] Don't override default fps range when not recording (flutter/packages#8891) 2025-03-31 [email protected] [google_maps_flutter] Fix typo and remove duplicitous CHANGELOG entry (flutter/packages#8754) 2025-03-31 [email protected] [extension_gsi] Support the latest version of googleapis_auth (flutter/packages#8931) 2025-03-31 49699333+dependabot[bot]@users.noreply.github.com [dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in /packages/pigeon/platform_tests/test_plugin/android (flutter/packages#8955) 2025-03-31 [email protected] [webview_flutter_wkwebview] Fixes crash when sending undefined message via javascript channel (flutter/packages#8776) 2025-03-31 49699333+dependabot[bot]@users.noreply.github.com [dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in /packages/pigeon/platform_tests/alternate_language_test_plugin/android (flutter/packages#8946) 2025-03-31 [email protected] [interactive_media_ads] Fixes `AdEventType`s not triggering on iOS in release mode (flutter/packages#8918) 2025-03-31 [email protected] [google_maps_flutter] Skip test that hangs iOS CI (flutter/packages#8958) 2025-03-28 [email protected] Manual roll Flutter from b16430b to 1d954f4 (114 revisions) (flutter/packages#8922) 2025-03-28 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 3 (flutter/packages#8912) 2025-03-27 [email protected] Use a more deterministic way of waiting for ad widgets to be ready. (flutter/packages#8920) 2025-03-27 [email protected] [camera_avfoundation] Test utils and mocks swift migration - part 1 (flutter/packages#8890) 2025-03-27 [email protected] [pigeon] correct usage of extended generics in generator methods (flutter/packages#8910) 2025-03-27 [email protected] [video_player] Fix layout issue caused by `Transform.rotate` not affecting space calculation. (flutter/packages#8685) 2025-03-27 [email protected] [shared_preferences] Fix a late initialized error with the example app (flutter/packages#8540) 2025-03-26 [email protected] [various] Disable sandbox in Chrome dart tests (flutter/packages#8909) 2025-03-25 [email protected] [tool] Move changed file detection to base command class (flutter/packages#8730) 2025-03-25 [email protected] [Camera] Add lens type information (iOS) (flutter/packages#8723) 2025-03-25 [email protected] [pigeon] kotlin equality methods (flutter/packages#8887) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --------- Co-authored-by: Maurice Parrish <[email protected]>
this pr closes flutter/flutter#164949 ? |
The
_counter
future was throwing a late initialization error because it was accessed from theFutureBuilder
inbuild()
before it was initialized. This adds a completer_preferencesReady
that we wait for before trying to build theFutureBuilder
for_counter
.