Skip to content

Conversation

@MitchellGoodwin
Copy link
Contributor

Fixes #161623.

Changes how the VerticalGestureRecognizer watches the sheet body. Before it stacked over the sheet and won all gesture arenas with vertical drags, so it didn't allow scrolling in the sheet. Now it has the sheet content as its child, so it will defer to child vertical gestures. This PR will allow scrolling to work in the sheet, but further work needs to be done to improve scrolling and drag to dismiss working together, see #161687.

Screen.Recording.2025-01-15.at.2.07.19.PM.mov

Pre-launch Checklist

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

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: cupertino flutter/packages/flutter/cupertino repository labels Jan 15, 2025
@MitchellGoodwin MitchellGoodwin added the team-design Owned by Design Languages team label Jan 15, 2025
Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍

For posterity and my own future memory, this PR allows the Scrollable to scroll, but on native it has the additional feature that when you reach the end of the Scrollable and continue dragging, the sheet gets dragged. That's not yet implemented here.


await gesture.down(const Offset(100, 100));

// Need 2 events to form a valid drag
Copy link
Contributor

Choose a reason for hiding this comment

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

Super nit: Period at the end.

final double endPosition = tester.getTopLeft(find.text('Middle of Scroll')).dy;

// Final position should be higher.
expect(endPosition, lessThan(startPosition));
Copy link
Contributor

Choose a reason for hiding this comment

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

Do tests that create a TestGesture need to end with gesture.up and pumpAndSettle? I'm thinking of this PR #136136 CC @polina-c

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh, very likely we do. I'll put that in.

@MitchellGoodwin MitchellGoodwin added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 16, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Jan 16, 2025
Merged via the queue into flutter:master with commit 3f2b7d9 Jan 16, 2025
103 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 19, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 20, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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] 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
@MitchellGoodwin MitchellGoodwin added the cp: beta cherry pick this pull request to beta release candidate branch label Feb 3, 2025
@flutteractionsbot
Copy link

Failed to create CP due to merge conflicts.
You will need to create the PR manually. See the cherrypick wiki for more info.

auto-submit bot pushed a commit that referenced this pull request Feb 6, 2025
)

CupertinoSheetRoute is a new widget added in 3.29 as a part of #157568. #161696 fixes #161623, which was an issue where you could not put scrollable content in the sheet, which is expected behavior. CupertinoSheetRoute has been a highly requested widget so is expected to get a lot of use.

Impacted users: anyone using the CupertinoSheetRoute with scrollable content, which should be a common use case.

Impact description: not being able to scroll within the sheet would create a very bad first impression and leave the sheet unusable for a lot of apps.

Workaround: None.

Risk: This is a brand new widget, so none. 
Test Coverage (Are you confident that your fix is well-tested by automated tests?): Yes, the fix has regression tests.
Validation Steps (What are the steps to validate that this fix works?): Create a CupertinoSheetRoute with scrollable content that expands past the size of the sheet. #161623 has a code sample.
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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] 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
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
flutter/flutter@5517cc9...b9e86a5

2025-01-18 [email protected] Fix link to Linux custom embedder artifacts (flutter/flutter#161699)
2025-01-18 [email protected] Remove tests, GLFW examples, and non-artifact builds from `linux_host_engine`. (flutter/flutter#161786)
2025-01-18 [email protected] [Impeller] when mips are disabled, also disable from sampler options. (flutter/flutter#161765)
2025-01-18 [email protected] revert removing Twitter, retain BlueSky (flutter/flutter#161803)
2025-01-17 [email protected] fix reorderable_list_test.dart (flutter/flutter#161836)
2025-01-17 [email protected] [Release] Update the cherry-pick process. (flutter/flutter#161771)
2025-01-17 [email protected] Reland "#143249 Autocomplete options width" (flutter/flutter#161695)
2025-01-17 [email protected] Roll Dart to Version 3.8.0-1.0.dev (flutter/flutter#161781)
2025-01-17 [email protected] [Impeller] use 3 fences to synchronize AHB swapchains (like we do for KHR). (flutter/flutter#161767)
2025-01-17 [email protected] [Impeller] remove Adreno denylist entries. (flutter/flutter#161740)
2025-01-17 [email protected] Refactor event redispatching (flutter/flutter#161701)
2025-01-17 [email protected] [Impellerc] correctly pad arrays of vec3s in reflector. (flutter/flutter#161697)
2025-01-17 [email protected] Initialize dartLoader.rootDirectories so the Web stack trace mapper can convert package source paths (flutter/flutter#160383)
2025-01-16 [email protected] Make fl_keyboard_manager_handle_event async (flutter/flutter#161637)
2025-01-16 [email protected] Update social links in readme (flutter/flutter#161778)
2025-01-16 [email protected] Remove some stray printf debugging (flutter/flutter#161706)
2025-01-16 [email protected] Set meta tag in default index (flutter/flutter#161493)
2025-01-16 [email protected] remove usage of `Usage` from build system (flutter/flutter#160663)
2025-01-16 [email protected] route CLI command usage information through the logger instead of using `print` (flutter/flutter#161533)
2025-01-16 [email protected] Enable duplicate `linux_host_engine_test`. (flutter/flutter#161613)
2025-01-16 [email protected] Do not block vertical drag gestures in CupertinoSheetRoute body (flutter/flutter#161696)
2025-01-16 [email protected] [Impeller] Update partial repaint to use a fullsize onscreen. (flutter/flutter#161626)

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] 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cp: beta cherry pick this pull request to beta release candidate branch f: cupertino flutter/packages/flutter/cupertino repository framework flutter/packages/flutter repository. See also f: labels. team-design Owned by Design Languages team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CupertinoSheetRoute blocks nested scrolling

3 participants