Skip to content

Conversation

@MTtankkeo
Copy link
Contributor

@MTtankkeo MTtankkeo commented May 22, 2025

Sorry, Closing PR #169196 and reopening this in a new PR for clarity and a cleaner commit history.

Fixes #82906

In the existing Flutter implementation, the Android stretch overscroll effect is achieved using Transform. However, this approach does not evenly stretch the screen as it does in the native Android environment. Therefore, in the Impeller environment, add or modify files to implement the effect using a fragment shader identical to the one used in native Android.

Note

  • The addition of a separate test file for StretchOverscrollEffect was not included because it would likely duplicate coverage already provided by the changes made in overscroll_stretch_indicator_test.dart within this PR.

However, since determining whether stretching occurred by referencing global coordinates is currently considered impossible with the new Fragment Shader approach, the code was modified to partially exclude the relevant test logic in the Impeller.

For reference, in the page_view_test.dart test, there was an issue with referencing the child Transform widget, but because the StretchOverscrollEffect widget is defined instead of the Transform widget in the Impeller environment, the code logic was adjusted accordingly.

  • Golden image tests were updated as the visual effect changes.

Reference Source

Old Skia (Using Transform)

old.mp4

New Impeller (Using fragment shader)

new.mp4

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added tool Affects the "flutter" command-line tool. See also t: labels. framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. f: scrolling Viewports, list views, slivers, etc. labels May 22, 2025
@flutter-dashboard
Copy link

Golden file changes have been found for this pull request. Click here to view and triage (e.g. because this is an intentional change).

If you are still iterating on this change and are not ready to resolve the images on the Flutter Gold dashboard, consider marking this PR as a draft pull request above. You will still be able to view image results on the dashboard, commenting will be silenced, and the check will not try to resolve itself until marked ready for review.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #169293 at sha 3c6f85a

@flutter-dashboard flutter-dashboard bot added the will affect goldens Changes to golden files label May 22, 2025
@MTtankkeo MTtankkeo marked this pull request as draft May 22, 2025 20:38
@MTtankkeo MTtankkeo marked this pull request as ready for review May 22, 2025 21:01
@flutter-dashboard
Copy link

Golden file changes are available for triage from new commit, Click here to view.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #169293 at sha 8b26ebc

@MTtankkeo
Copy link
Contributor Author

😭 Hi @justinmc, @dkwingsmt, @Piinks, could you please review this PR? Thanks! 😭

Copy link
Contributor

@Piinks Piinks left a comment

Choose a reason for hiding this comment

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

Hi @MTtankkeo thanks for the contribution! This type of change would involve some changes in the engine I think.

@MTtankkeo MTtankkeo marked this pull request as draft May 23, 2025 18:35
@flutter-dashboard
Copy link

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@dkwingsmt
Copy link
Contributor

After an internal discussion between @Piinks, a couple other folks, and I, we've come to agree with the current direction to add the shader to the framework as long as it aligns with how we implement the ink sparkle. We'll take a more detailed review at this PR soon, but I just want to let you know ASAP so you don't have to look into the engine code. Sorry for the confusion!

@MTtankkeo MTtankkeo marked this pull request as ready for review May 23, 2025 19:22
@flutter-dashboard
Copy link

Golden file changes are available for triage from new commit, Click here to view.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #169293 at sha 93ad7c2

@MTtankkeo MTtankkeo requested a review from chunhtai May 26, 2025 17:45
Copy link
Contributor

@chunhtai chunhtai left a comment

Choose a reason for hiding this comment

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

Code mostly looks good to me just left some minor comment.

@MTtankkeo MTtankkeo requested review from a team and matanlurey as code owners May 27, 2025 20:21
@github-actions github-actions bot added a: tests "flutter test", flutter_test, or one of our tests a: text input Entering text in a text field or keyboard related problems c: contributor-productivity Team-specific productivity, code health, technical debt. platform-android Android applications specifically platform-ios iOS applications specifically engine flutter/engine related. See also e: labels. labels May 27, 2025
@matanlurey
Copy link
Contributor

reason for revert: Does not work on Metal (iOS/macOS):

The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).

@matanlurey matanlurey added the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
auto-submit bot pushed a commit that referenced this pull request Aug 15, 2025
@auto-submit auto-submit bot removed the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Aug 15, 2025
flutter/flutter@f4334d2...52af7a5

2025-08-15 [email protected] Roll Packages from 09533b7 to 5c52c55 (6 revisions) (flutter/flutter#173854)
2025-08-15 [email protected] Roll Skia from 46ec77ae3954 to 5654ac32ede0 (1 revision) (flutter/flutter#173848)
2025-08-15 [email protected] Roll Skia from 162f47d6b6bd to 46ec77ae3954 (2 revisions) (flutter/flutter#173833)
2025-08-15 [email protected] Roll Dart SDK from c7faab270f27 to cc008dc8e7aa (2 revisions) (flutter/flutter#173826)
2025-08-15 [email protected] Roll Skia from ad5d04000101 to 162f47d6b6bd (5 revisions) (flutter/flutter#173822)
2025-08-15 [email protected] Update the RBE configuration for the recent Clang update (flutter/flutter#173803)
2025-08-15 [email protected] Stop writing legacy `FLUTTER_ROOT/version` file (by default?) (flutter/flutter#172793)
2025-08-15 [email protected] Remove `luci_flags.parallel_download_builds` and friends (flutter/flutter#173799)
2025-08-14 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Predictive back route transitions by default (#165832)" (flutter/flutter#173809)
2025-08-14 [email protected] Roll Skia from dca5f05fee87 to ad5d04000101 (8 revisions) (flutter/flutter#173798)
2025-08-14 [email protected] [web] Cleanup usages of deprecated `routeUpdated` message (flutter/flutter#173782)
2025-08-14 [email protected] Make sure that DataTable, DataColumn, DataRow, and DataCell don't crash in 0x0 environment (flutter/flutter#173515)
2025-08-14 [email protected] Make sure that a TableRowInkWell doesn't crash in 0x0 environment (flutter/flutter#173627)
2025-08-14 [email protected] Make sure that a DatePickerDialog doesn't crash in 0x0 environment (flutter/flutter#173677)
2025-08-14 [email protected] Return result of setting OpenGL contexts back to Flutter (flutter/flutter#173757)
2025-08-14 [email protected] Read `bin/cache/flutter.version.json` instead of `version` for `flutter_gallery` (flutter/flutter#173797)
2025-08-14 [email protected] Predictive back route transitions by default (flutter/flutter#165832)
2025-08-14 [email protected] feat: add onLongPressUp callback to InkWell widget (flutter/flutter#173221)
2025-08-14 [email protected] Roll Dart SDK from 214a7f829913 to c7faab270f27 (1 revision) (flutter/flutter#173792)
2025-08-14 [email protected] Add error handling for `Element` lifecycle user callbacks (flutter/flutter#173148)
2025-08-14 [email protected] Roll Fuchsia Linux SDK from I1TfNmsqTp7t3rO8e... to zWRpLglb48zC1vZLv... (flutter/flutter#173784)
2025-08-14 [email protected] [Range slider] Tap on active range,  the thumb closest to the mouse cursor should move to the cursor position. (flutter/flutter#173725)
2025-08-14 [email protected] Roll Packages from 6cb9113 to 09533b7 (4 revisions) (flutter/flutter#173789)
2025-08-14 [email protected] Implements the Android native stretch effect as a fragment shader (Impeller-only). (flutter/flutter#169293)
2025-08-14 [email protected] Sync `CHANGELOG.md` (3.35 -> `master`) (flutter/flutter#173790)
2025-08-14 [email protected] [VPAT][A11y] Announce Autocomplete search results status (flutter/flutter#173480)
2025-08-14 [email protected] Fix InputDecorator label padding (flutter/flutter#173344)
2025-08-14 [email protected] Fix default minimumSize in dropdownMenu when maximumSize is null (flutter/flutter#169438)
2025-08-14 [email protected] Thread sub-builders for every engine-uploading builder (flutter/flutter#173742)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: 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
github-merge-queue bot pushed a commit that referenced this pull request Aug 15, 2025
…hader (Impeller-only). (#169293)" (#173865)

<!-- start_original_pr_link -->
Reverts: #169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR #169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes #82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
@justinmc
Copy link
Contributor

@MTtankkeo Can you open a new PR to try to reland this when you get a chance? The best way is probably to press the "Revrt" button on #173865. We do still want to solve this!

We're trying to figure out what caused the error posted above. Probably it's a configuration thing and not related to your shader code.

@MTtankkeo
Copy link
Contributor Author

MTtankkeo commented Aug 15, 2025

@justinmc new PR: #173885

ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…peller-only). (flutter#169293)

> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
WillBLogical pushed a commit to WillBLogical/packages that referenced this pull request Aug 20, 2025
…r#9832)

flutter/flutter@f4334d2...52af7a5

2025-08-15 [email protected] Roll Packages from 09533b7 to 5c52c55 (6 revisions) (flutter/flutter#173854)
2025-08-15 [email protected] Roll Skia from 46ec77ae3954 to 5654ac32ede0 (1 revision) (flutter/flutter#173848)
2025-08-15 [email protected] Roll Skia from 162f47d6b6bd to 46ec77ae3954 (2 revisions) (flutter/flutter#173833)
2025-08-15 [email protected] Roll Dart SDK from c7faab270f27 to cc008dc8e7aa (2 revisions) (flutter/flutter#173826)
2025-08-15 [email protected] Roll Skia from ad5d04000101 to 162f47d6b6bd (5 revisions) (flutter/flutter#173822)
2025-08-15 [email protected] Update the RBE configuration for the recent Clang update (flutter/flutter#173803)
2025-08-15 [email protected] Stop writing legacy `FLUTTER_ROOT/version` file (by default?) (flutter/flutter#172793)
2025-08-15 [email protected] Remove `luci_flags.parallel_download_builds` and friends (flutter/flutter#173799)
2025-08-14 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Predictive back route transitions by default (#165832)" (flutter/flutter#173809)
2025-08-14 [email protected] Roll Skia from dca5f05fee87 to ad5d04000101 (8 revisions) (flutter/flutter#173798)
2025-08-14 [email protected] [web] Cleanup usages of deprecated `routeUpdated` message (flutter/flutter#173782)
2025-08-14 [email protected] Make sure that DataTable, DataColumn, DataRow, and DataCell don't crash in 0x0 environment (flutter/flutter#173515)
2025-08-14 [email protected] Make sure that a TableRowInkWell doesn't crash in 0x0 environment (flutter/flutter#173627)
2025-08-14 [email protected] Make sure that a DatePickerDialog doesn't crash in 0x0 environment (flutter/flutter#173677)
2025-08-14 [email protected] Return result of setting OpenGL contexts back to Flutter (flutter/flutter#173757)
2025-08-14 [email protected] Read `bin/cache/flutter.version.json` instead of `version` for `flutter_gallery` (flutter/flutter#173797)
2025-08-14 [email protected] Predictive back route transitions by default (flutter/flutter#165832)
2025-08-14 [email protected] feat: add onLongPressUp callback to InkWell widget (flutter/flutter#173221)
2025-08-14 [email protected] Roll Dart SDK from 214a7f829913 to c7faab270f27 (1 revision) (flutter/flutter#173792)
2025-08-14 [email protected] Add error handling for `Element` lifecycle user callbacks (flutter/flutter#173148)
2025-08-14 [email protected] Roll Fuchsia Linux SDK from I1TfNmsqTp7t3rO8e... to zWRpLglb48zC1vZLv... (flutter/flutter#173784)
2025-08-14 [email protected] [Range slider] Tap on active range,  the thumb closest to the mouse cursor should move to the cursor position. (flutter/flutter#173725)
2025-08-14 [email protected] Roll Packages from 6cb9113 to 09533b7 (4 revisions) (flutter/flutter#173789)
2025-08-14 [email protected] Implements the Android native stretch effect as a fragment shader (Impeller-only). (flutter/flutter#169293)
2025-08-14 [email protected] Sync `CHANGELOG.md` (3.35 -> `master`) (flutter/flutter#173790)
2025-08-14 [email protected] [VPAT][A11y] Announce Autocomplete search results status (flutter/flutter#173480)
2025-08-14 [email protected] Fix InputDecorator label padding (flutter/flutter#173344)
2025-08-14 [email protected] Fix default minimumSize in dropdownMenu when maximumSize is null (flutter/flutter#169438)
2025-08-14 [email protected] Thread sub-builders for every engine-uploading builder (flutter/flutter#173742)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: 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
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
github-merge-queue bot pushed a commit that referenced this pull request Aug 27, 2025
…der (Impeller-only)." (#173885)

This PR retries the previously reverted PR #169293.

> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.

## 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.
- [x] 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.

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…peller-only). (flutter#169293)

> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…der (Impeller-only)." (flutter#173885)

This PR retries the previously reverted PR flutter#169293.

> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.

## 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.
- [x] 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.

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…peller-only). (flutter#169293)

> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…der (Impeller-only)." (flutter#173885)

This PR retries the previously reverted PR flutter#169293.

> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.

## 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.
- [x] 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.

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
Jaineel-Mamtora pushed a commit to Jaineel-Mamtora/flutter_forked that referenced this pull request Sep 24, 2025
…der (Impeller-only)." (flutter#173885)

This PR retries the previously reverted PR flutter#169293.

> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.

## 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.
- [x] 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.

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…peller-only). (flutter#169293)

> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…hader (Impeller-only). (flutter#169293)" (flutter#173865)

<!-- start_original_pr_link -->
Reverts: flutter#169293
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Does not work on Metal (iOS/macOS):

```
The following _Exception was thrown running a test:
Exception: Asset 'shaders/stretch_effect.frag' does not contain appropriate runtime stage data for current backend (Metal).
```
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: MTtankkeo
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {dkwingsmt, justinmc, chunhtai}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
> Sorry, Closing PR flutter#169196 and reopening this in a new PR for clarity
and a cleaner commit history.

Fixes flutter#82906

In the existing Flutter implementation, the Android stretch overscroll
effect is achieved using Transform. However, this approach does not
evenly stretch the screen as it does in the native Android environment.
Therefore, in the Impeller environment, add or modify files to implement
the effect using a fragment shader identical to the one used in native
Android.

> [!NOTE]
> - The addition of a separate test file for StretchOverscrollEffect was
not included because it would likely duplicate coverage already provided
by the changes made in overscroll_stretch_indicator_test.dart within
this PR.
>> However, since determining whether stretching occurred by referencing
global coordinates is currently considered impossible with the new
Fragment Shader approach, the code was modified to partially exclude the
relevant test logic in the Impeller.
>>
>> For reference, in the page_view_test.dart test, there was an issue
with referencing the child Transform widget, but because the
StretchOverscrollEffect widget is defined instead of the Transform
widget in the Impeller environment, the code logic was adjusted
accordingly.
> 
> - Golden image tests were updated as the visual effect changes.

## Reference Source
-
https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/libs/hwui/effects/StretchEffect.cpp

## `Old` Skia (Using Transform)

https://github.com/user-attachments/assets/22d8ff96-d875-4722-bf6f-f0ad15b9077d

## `New` Impeller (Using fragment shader)

https://github.com/user-attachments/assets/73b6ef18-06b2-42ea-9793-c391ec2ce282

## 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.
- [x] 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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <[email protected]>
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…der (Impeller-only)." (flutter#173885)

This PR retries the previously reverted PR flutter#169293.

> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.

## 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.
- [x] 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.

---------

Co-authored-by: Tong Mu <[email protected]>
Co-authored-by: Kate Lovett <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

f: scrolling Viewports, list views, slivers, etc. framework flutter/packages/flutter repository. See also f: labels. tool Affects the "flutter" command-line tool. See also t: labels. will affect goldens Changes to golden files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-implement stretch overscroll behavior as a custom shader

7 participants