Skip to content

[cupertino_ui] Fix platform view sheet transitions - #12565

Open
laishere wants to merge 5 commits into
flutter:mainfrom
laishere:fix/cupertino-sheet-platform-views
Open

[cupertino_ui] Fix platform view sheet transitions#12565
laishere wants to merge 5 commits into
flutter:mainfrom
laishere:fix/cupertino-sheet-platform-views

Conversation

@laishere

Copy link
Copy Markdown

From flutter/flutter#182935
Fixes flutter/flutter#169495

The scale transition in showCupertinoSheet for the underlying route defaulted to FilterQuality.medium, which pushes an implicit ImageFilterLayer.

Platform views cannot be correctly sampled or transformed by rasterization-based filters. Consequently, they fail to reflect the scale transformation during the transition animation when an ImageFilterLayer is present, leading to a broken visual effect where the background scales but the platform view remains at its original size.

Solution:
Added hasPlatformView parameter. false by default which matches the original behavior. When set to true, we use standard TransformLayer by setting filterQuality to null.

Pre-Review Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter].
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I [linked to at least one issue that this PR fixes] in the description above.
  • I followed [the version and CHANGELOG instructions], using [semantic versioning] and the [repository CHANGELOG style], or I have commented below to indicate which documented exception this PR falls under[^1].
  • I updated/added any relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or I have commented below to indicate which [test exemption] this PR falls under[^1].
  • All existing and new tests are passing.

@github-actions github-actions Bot added p: cupertino_ui triage-design Should be looked at in design triage labels Aug 24, 2026

@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 introduces a hasPlatformViews parameter to Cupertino sheet transitions, routes, and helper functions to ensure platform views remain synchronized during transitions by disabling image-filtered scaling. It also includes corresponding unit tests and a changelog entry. A review comment suggests using scrollableBuilder instead of the deprecated pageBuilder in the new tests.

Comment thread packages/cupertino_ui/test/sheet_test.dart Outdated
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

@dkwingsmt dkwingsmt 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. Thank you!

@dkwingsmt
dkwingsmt requested a review from victorsanni August 25, 2026 21:25
Comment thread packages/cupertino_ui/lib/src/sheet.dart
@laishere

laishere commented Sep 1, 2026

Copy link
Copy Markdown
Author

Here's the subpixel issue I mentioned about when using TransformLayer.
We can see the underlying route title will drift in the navigation bar when being scaled, while the default one uses ImageFilterLayer which has better rasterization result.

Raster.Drift.Comparison.When.Scaling.mp4

@victorsanni victorsanni added the CICD Run CI/CD label Sep 1, 2026
@laishere

laishere commented Sep 4, 2026

Copy link
Copy Markdown
Author

@dkwingsmt It shows one workflow awaiting approval. Is it required?

@flutter-dashboard flutter-dashboard Bot removed the CICD Run CI/CD label Sep 8, 2026
@dkwingsmt dkwingsmt added the CICD Run CI/CD label Sep 8, 2026
@flutter-dashboard flutter-dashboard Bot removed the CICD Run CI/CD label Sep 8, 2026
@dkwingsmt dkwingsmt added the CICD Run CI/CD label Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD p: cupertino_ui triage-design Should be looked at in design triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CupertinoSheetRoute makes webview "detached" itself in background

3 participants