Skip to content

[material_ui][cupertino_ui] allow page routes to opt out of route semantics - #182556 - #12674

Open
haashem wants to merge 2 commits into
flutter:mainfrom
haashem:fix-168915-route-semantics
Open

[material_ui][cupertino_ui] allow page routes to opt out of route semantics - #182556#12674
haashem wants to merge 2 commits into
flutter:mainfrom
haashem:fix-168915-route-semantics

Conversation

@haashem

@haashem haashem commented Aug 28, 2026

Copy link
Copy Markdown

Nested navigators may use routes to update only part of the visible screen. However, Material and Cupertino page routes currently introduce a semantics route scope, causing screen readers to treat these updates as navigation to a new screen.

This adds includeRouteSemantics to:

  • MaterialPageRoute
  • MaterialPage
  • CupertinoPageRoute
  • CupertinoPage

The option defaults to true, preserving existing behavior. When set to false, the route content is not wrapped in a semantics node with scopesRoute: true.

Tests cover both imperative routes and declarative pages.

Fixes flutter/flutter#168915.

Pre-Review Checklist

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. 2

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request adds an includeRouteSemantics option (defaulting to true) to CupertinoPageRoute, CupertinoPage, MaterialPageRoute, and MaterialPage, allowing them to opt out of introducing a semantics route scope. The review feedback suggests making the underlying _includeRouteSemantics getter public on both CupertinoRouteTransitionMixin and MaterialRouteTransitionMixin. This change would allow custom routes to override the property, simplify the overrides in the route and page classes, and enable reusing the documentation template via macros.

Comment thread packages/cupertino_ui/lib/src/route.dart Outdated
Comment thread packages/cupertino_ui/lib/src/route.dart Outdated
Comment thread packages/cupertino_ui/lib/src/route.dart Outdated
Comment thread packages/cupertino_ui/lib/src/route.dart Outdated
Comment thread packages/cupertino_ui/lib/src/route.dart Outdated
Comment thread packages/material_ui/lib/src/page.dart Outdated
Comment thread packages/material_ui/lib/src/page.dart Outdated
Comment thread packages/material_ui/lib/src/page.dart Outdated
Comment thread packages/material_ui/lib/src/page.dart Outdated
Comment thread packages/material_ui/lib/src/page.dart Outdated

@chunhtai chunhtai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@stuartmorgan-g

Copy link
Copy Markdown
Collaborator

Thank you for your contribution! Because of the volume of PRs we receive, we require that new contributors use our checklist to guide them through critical steps in creating a Flutter PR. Please edit the PR description to add the checklist, then ensure that you have completed all of the steps.

@haashem haashem changed the title fix: allow page routes to opt out of route semantics - #182556 [material_ui][cupertino_ui] allow page routes to opt out of route semantics - #182556 Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

p: cupertino_ui p: material_ui triage-design Should be looked at in design triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[go_router] Voice over drops reading BottomNavigationBar selected tab when it becomes selected

3 participants