Skip to content

[cupertino_ui] Fix platform view sheet transitions - #12565

Merged
auto-submit[bot] merged 5 commits into
flutter:mainfrom
laishere:fix/cupertino-sheet-platform-views
Sep 9, 2026
Merged

auto-submit[bot] merged 5 commits into
flutter:mainfrom
laishere:fix/cupertino-sheet-platform-views

Conversation

@laishere

Copy link
Copy Markdown
Contributor

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
Contributor 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
Contributor 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 CICD Run CI/CD autosubmit Merge PR when tree becomes green via auto submit App labels Sep 9, 2026
@auto-submit
auto-submit Bot merged commit a357014 into flutter:main Sep 9, 2026
14 checks passed
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
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
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 10, 2026
…er#192550)

flutter/packages@36e088a...8a35b16

2026-09-10 36861262+QuncCccccc@users.noreply.github.com [material_ui]
Migrate M3 buttons template to use new gen_defaults
(flutter/packages#12744)
2026-09-09 victorsanniay@gmail.com [cupertino_ui]Add awaitNotRequired to
Future-returning callsites without await (flutter/packages#12817)
2026-09-09 victorsanniay@gmail.com [material_ui] Add awaitNotRequired
annotation to material_ui (flutter/packages#12622)
2026-09-09 victor.orozco@cloudsufi.com [image_picker] Add native tests
for photo-library access and UIImagePicker completion
(flutter/packages#12540)
2026-09-09 hashemp206@yahoo.com [material_ui][cupertino_ui] allow page
routes to opt out of route semantics - flutter#182556 (flutter/packages#12674)
2026-09-09 victor.orozco@cloudsufi.com [image_picker] Add native tests
for pick results, camera access, and presentation
(flutter/packages#12539)
2026-09-09 laishereu@gmail.com [cupertino_ui] Fix platform view sheet
transitions (flutter/packages#12565)
2026-09-09 150371713+dhc-tech@users.noreply.github.com
[camera_android_camerax] Bump cameraxVersion to 1.6.2, remove
concurrent-futures workaround (flutter/packages#12698)
2026-09-09 116356835+AbdeMohlbi@users.noreply.github.com `[material_ui]`
replace identical checks with equality when dealing with enums
(flutter/packages#12633)
2026-09-09 engine-flutter-autoroll@skia.org Roll Flutter from
b444e78 to 63b9518 (21 revisions) (flutter/packages#12814)
2026-09-09 116356835+AbdeMohlbi@users.noreply.github.com
`[cupertino_ui]` replace identical checks with equality when dealing
with enums (flutter/packages#12632)
2026-09-09 tarrinneal@gmail.com [pigeon] add support for multiple swift
outputs (flutter/packages#12720)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App 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