Skip to content

showOnScreen should only scroll if new offset is within bounds #11665

Description

@goderbauer

In accessibility mode, if showOnScreen [1] calculates an offset that is outside of the minExtent and maxExtent of the scrollable, we still attempt to scroll. This results in an overscroll animation, which is misplaced in a11y mode. Instead, if scrolling is not possible, nothing should happen.

Related: #11663

[1]

void showOnScreen([RenderObject child]) {

Activity

  1. added
    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)
    f: scrollingViewports, list views, slivers, etc.
    on Aug 17, 2017
  2. changed the title [-]showOnScreen should only scroll if new offset is within bounds[/-] [+]a11y scrilling should only scroll if new offset is within bounds[/+] on Sep 26, 2017
  3. changed the title [-]a11y scrilling should only scroll if new offset is within bounds[/-] [+]showOnScreen should only scroll if new offset is within bounds[/+] on Sep 26, 2017
  4. goderbauer commented on Dec 20, 2017

    @goderbauer
    MemberAuthor

    Related: #12274

  5. modified the milestones: 3: Current Milestone, on Apr 11, 2018
  6. goderbauer commented on May 18, 2018

    @goderbauer
    MemberAuthor

    This is an issue for Tables that scroll in x and y direction.

  7. jonahwilliams commented on Jul 17, 2018

    @jonahwilliams
    Contributor

    @goderbauer should this behavior only be implemented in a11y mode?

  8. goderbauer commented on Jul 17, 2018

    @goderbauer
    MemberAuthor

    I believe this needs to be fixed regardless of a11y mode.

  9. 5 remaining items

  10. jonahwilliams commented on Oct 8, 2018

    @jonahwilliams
    Contributor

    One possible fix is to inject a non-bouncing scroll physics when MediaQueryData.accessibleNavigation is enabled.

  11. removed their assignment
    on Nov 3, 2018
  12. added
    P2Important issues not at the top of the work list
    on May 29, 2020
  13. removed this from the milestone on Aug 17, 2020
  14. TahaTesser commented on Sep 8, 2020

    @TahaTesser
    Contributor

    Is this issue still valid?

    void showOnScreen({
    RenderObject descendant,
    Rect rect,
    Duration duration = Duration.zero,
    Curve curve = Curves.ease,
    }) {
    if (!offset.allowImplicitScrolling) {
    return super.showOnScreen(
    descendant: descendant,
    rect: rect,
    duration: duration,
    curve: curve,
    );
    }

  15. goderbauer commented on Sep 8, 2020

    @goderbauer
    MemberAuthor

    /cc @LongCatIsLooong Did one of your fixes in this area address this by any chance?

  16. LongCatIsLooong commented on Sep 8, 2020

    @LongCatIsLooong
    Contributor

    I think that fix only affects persistent headers, so unlikely.

  17. self-assigned this
    on Jun 26, 2026
  18. added
    ⏳Bot is counting down the days until it unassigns the issue
    on Oct 30, 2026
  19. flutter-triage-bot commented on Oct 30, 2026

    @flutter-triage-bot

    This issue is assigned to @mbcorona but has had no recent status updates. Please consider unassigning this issue if it is not going to be addressed in the near future. This allows people to have a clearer picture of what work is actually planned. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

⏳Bot is counting down the days until it unassigns the issueP2Important issues not at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: mulligan (g3)f: scrollingViewports, list views, slivers, etc.frameworkflutter/packages/flutter repository. See also f: labels.team-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions