-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Fix the issue where calling showOnScreen on a sliver after a pinned child in SliverMainAxisGroup does not reveal it. #171339
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
Fix the issue where calling showOnScreen on a sliver after a pinned child in SliverMainAxisGroup does not reveal it. #171339
Conversation
| /// | ||
| /// Typically used by [RenderViewportBase.getOffsetToReveal] to ensure a particular | ||
| /// child is visible. | ||
| double? childScrollOffsetToReveal(covariant RenderObject child) { |
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.
Why add this method instead of handling it in the already overridden childScrollOffset in RenderSliverMainAxisGroup?
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.
Based on the current childScrollOffset documentation, it should return the scroll offset of a child item, not necessarily for making the child visible. However, currently in RenderSliverMainAxisGroup, it seems to only be called during ensureVisible. I tried directly overriding childScrollOffset and all tests in sliver_main_axis_group_test.dart still pass. So I think this approach is also feasible. But I think childScrollOffsetToReveal is also good - it can clearly indicate that it's for revealing a child item's offset. If we don't do this, we might need to modify the documentation description of childScrollOffset. I'll follow your guidance on which approach to use.
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.
It looks like this is the value people would consider correct and want back from childScrollOffset for RenderSliverMainAxisGroup.
I think it makes sense to update the docs for childScrollOffset to clarify. I think SliverMainAxisGroup was the first, and the only so far, sliver that contains sliver children. We already have childScrollOffset and childMainAxis, adding to this space might be confusing to determine which means what.
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.
The childScrollOffsetToReveal method also made me think that folks would expect to be able to configure the alignment and have a return type of RevealedOffset, which the other similar API does.
eee7865 to
f22cf52
Compare
f22cf52 to
19f4e24
Compare
Piinks
left a comment
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.
LGTM thank you!
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
Roll Flutter from c3279ca to 871849e (56 revisions) flutter/flutter@c3279ca...871849e 2025-08-01 engine-flutter-autoroll@skia.org Roll Dart SDK from 6832e04cf2f9 to 6e1bb159c860 (8 revisions) (flutter/flutter#173119) 2025-08-01 derekx@google.com Add `--profile-startup` flag to `flutter run` (flutter/flutter#172990) 2025-08-01 32538273+ValentinVignal@users.noreply.github.com Add `side` to `RadioThemeData` (flutter/flutter#171945) 2025-08-01 katelovett@google.com Update GCA instructions (flutter/flutter#173001) 2025-08-01 jssaadeh@outlook.com [engine] Null aware elements clean-ups (flutter/flutter#173075) 2025-08-01 engine-flutter-autoroll@skia.org Roll Packages from db6988d to f0645d8 (3 revisions) (flutter/flutter#173111) 2025-08-01 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland licenses cpp switch 3 (#173063)" (flutter/flutter#173113) 2025-08-01 magder@google.com Update embedder API CODEOWNERS (flutter/flutter#173081) 2025-08-01 magder@google.com Move android_obfuscate_test from devicelab into tools integration.shard (flutter/flutter#169798) 2025-08-01 jhy03261997@gmail.com [A11y] RangeSlider should have 2 focus node (flutter/flutter#172729) 2025-07-31 chinmaygarde@google.com Upload the linux arm64 embedder to cloud buckets. (flutter/flutter#173068) 2025-07-31 30870216+gaaclarke@users.noreply.github.com Reland licenses cpp switch 3 (flutter/flutter#173063) 2025-07-31 bkonyi@google.com [ Tool ] Mark IOOverrides subclasses as `final` (flutter/flutter#173078) 2025-07-31 chenmingding.cmd@alibaba-inc.com [macOS] Remove duplicate object initialization (flutter/flutter#171767) 2025-07-31 magder@google.com Redistribute Android test owners (flutter/flutter#172886) 2025-07-31 magder@google.com Avoid negatives in the styleguide.md (flutter/flutter#172917) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from 42e3bed42110 to 49e39cd3cf18 (7 revisions) (flutter/flutter#173069) 2025-07-31 ybz975218925@gmail.com Fix the issue where calling showOnScreen on a sliver after a pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339) 2025-07-31 31685655+SalehTZ@users.noreply.github.com Improve assertion message in `EdgeInsetsDirectional.resolve` (flutter/flutter#172099) 2025-07-31 30870216+gaaclarke@users.noreply.github.com licenses_cpp: Switched to lexically_relative for 2x speed boost. (flutter/flutter#173048) 2025-07-31 a-siva@users.noreply.github.com Add dartvm to the dart_sdk_entitlement_config list. (flutter/flutter#173044) 2025-07-31 mdebbar@google.com [web] ClickDebouncer workaround for iOS Safari click behavior (flutter/flutter#172995) 2025-07-31 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland licenses cpp switch 2 (#172996)" (flutter/flutter#173059) 2025-07-31 mdebbar@google.com [web] Text editing test accepts both behaviors in Firefox (flutter/flutter#172767) 2025-07-31 30870216+gaaclarke@users.noreply.github.com Reland licenses cpp switch 2 (flutter/flutter#172996) 2025-07-31 engine-flutter-autoroll@skia.org Roll Packages from d914120 to db6988d (2 revisions) (flutter/flutter#173039) 2025-07-31 737941+loic-sharma@users.noreply.github.com Add a SliverList code sample (flutter/flutter#172986) 2025-07-31 1083941774@qq.com fix: adjust scrollable size assertion with tolerance (flutter/flutter#171426) 2025-07-31 30870216+gaaclarke@users.noreply.github.com impeller: Shrink `Command` 40 bytes (flutter/flutter#173004) 2025-07-31 mdebbar@google.com [web] Remove outdated comment about HTML renderer (flutter/flutter#172877) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from ff4da49305c5 to 42e3bed42110 (1 revision) (flutter/flutter#173038) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from 7d468a4868cb to ff4da49305c5 (3 revisions) (flutter/flutter#173028) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from 951277895c86 to 7d468a4868cb (1 revision) (flutter/flutter#173027) 2025-07-31 a-siva@users.noreply.github.com Manual roll of Dart from 14ea8d342149 to 6832e04cf2f9 (flutter/flutter#173015) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from 8bdf4cdcf4ed to 951277895c86 (2 revisions) (flutter/flutter#173022) 2025-07-31 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from bQVQlLssTxxLjoDU0... to xo_bqOoFuBKFmgKxn... (flutter/flutter#173021) 2025-07-31 31685655+SalehTZ@users.noreply.github.com feat: Add `cursorHeight` to `DropdownMenu` (flutter/flutter#172615) 2025-07-31 engine-flutter-autoroll@skia.org Roll Skia from a3347cee2d73 to 8bdf4cdcf4ed (3 revisions) (flutter/flutter#173013) 2025-07-31 bkonyi@google.com [ Widget Preview ] Add `--web-server` support (flutter/flutter#172978) 2025-07-30 jmccandless@google.com Bump customer tests for zulip fix 2 (flutter/flutter#173003) 2025-07-30 jssaadeh@outlook.com Migrate to null aware elements - Part 4 (flutter/flutter#172322) 2025-07-30 fluttergithubbot@gmail.com Marks Linux linux_feature_flags_test to be unflaky (flutter/flutter#172629) 2025-07-30 bkonyi@google.com [ Widget Previews ] Add support for `MultiPreview`s (flutter/flutter#172852) 2025-07-30 30870216+gaaclarke@users.noreply.github.com Made licenses_cpp simpatico with google licenses (flutter/flutter#172991) 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from d579722d65c6 to a3347cee2d73 (6 revisions) (flutter/flutter#172989) 2025-07-30 ricardodalarme@outlook.com Migrate to null aware elements - Part 5 (flutter/flutter#172418) ...
…hild in SliverMainAxisGroup does not reveal it. (flutter#171339) Fixes: flutter#154615 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…hild in SliverMainAxisGroup does not reveal it. (flutter#171339) Fixes: flutter#154615 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…hild in SliverMainAxisGroup does not reveal it. (flutter#171339) Fixes: flutter#154615 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…pinned child in SliverMainAxisGroup does not reveal it. (flutter/flutter#171339)
…hild in SliverMainAxisGroup does not reveal it. (flutter#171339) Fixes: flutter#154615 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Fixes: #154615
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.