-
Notifications
You must be signed in to change notification settings - Fork 28.8k
Shared element transition for predictive back #154718
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shared element transition for predictive back #154718
Conversation
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
cc @justinmc I have opened this PR as we discussed. I will add tests and documentation once the PR looks good. |
c86b3ff
to
2ed9df2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @maRci002 thanks for contributing! It looks like there are some failing checks, can you take a look?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for jumping on this! Sorry I missed the notification.
Two slight inconsistencies I notice when I try the native Settings app on the latest beta:
-
The previous route sits slightly offscreen to the left and also moves vertically when you drag vertically. I guess that's probably not easily doable. Possibly with @MitchellGoodwin's recent work in #150031.
-
After releasing the gesture, the outgoing route fades out on native, but on your branch I see it scale and then suddenly disappear.
Can you take a look and see if you can get closer to native on either of those 2 points? Otherwise this is a huge improvement and I'm on board with landing this approach.
XRecorder_Edited_27092024_153502.mp4
// pop gesture. Otherwise, for things like button presses or other | ||
// programmatic navigation, fall back to ZoomPageTransitionsBuilder. | ||
if (route.popGestureInProgress) { | ||
return _PredictiveBackPageFullScreenTransition( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think PredictiveBackPageTransitionBuilder should probably do the shared element transition, since that seems to be the default on native Android? Then we would have a separate PredictiveBackFullScreenPageTransitionBuilder for that transition. Or we could even delete it... Do we know if the full screen transition exists on native Android? Like can I choose to use it when writing a native Android app? It's hard to tell since everything is in beta still.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh yeah, the PredictiveBackPageTransitionBuilder
should provide the new transition out of the box, and the old one could be renamed or removed.
@maRci002 do you plan to continue working on this PR? |
Yes, I plan to continue working on this PR. I will soon make one of my phones operational to see the native behavior accurately. I will place this PR in draft until then. |
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 Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
On Android 14, the Settings app uses the Here is the predictive back animation on Android 15 (with both output.mp4
The only problem is that we are driving the route via |
@maRci002 Can you re-upload that video? It doesn't ever start playing for me. |
settings.app.predictive.back.mp4Here is the default back button behavior; this will be implemented by #142352: settings.app.back.button.mp4
When Here is a pseudo code about prev route problem: class PredictiveBackPageSharedElementTransitionsBuilder extends PageTransitionsBuilder {
const PredictiveBackPageSharedElementTransitionsBuilder();
@override
Widget delegatedTransition(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, bool allowSnapshotting, Widget? child) {
// Problems:
// We don't know the topmost Route.
// We cannot listen to predictive back events since WidgetsBinding sends them only to the active listener, which is the _PredictiveBackGestureDetector inside the buildTransitions method
}
@override
Widget buildTransitions<T>() {
return _PredictiveBackGestureDetector<T>(
route: route,
builder: () {
if (route.popGestureInProgress) {
return _PredictiveBackPageSharedElementTransition();
}
return const ZoomPageTransitionsBuilder().buildTransitions();
},
);
}
} |
2ed9df2
to
3e5828c
Compare
I made some changes and set fade_out.mp4 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm able to see your videos on my Mac but not on my Linux machine. Strange but I guess that is doable 🤷 .
Thank you for all of your assessment. I'm on board with everything you said. So in the latest Android the default page transition is the Shared Axis transition (#142352, which is being worked on), and when doing predictive back it uses the Shared Element transition (which this PR implements).
So we are on track to match the latest version of native Android. PredictiveBackPageTransitionBuilder will be updated to use your _PredictiveBackPageSharedElementTransition and fall back to the upcoming Shared Axis transition.
Problems for the incoming route when swiping back
I think we could merge this PR without support for animating the incoming route. Your latest video you posted looks quite good without it. But let's talk through those problems.
We don't know the topmost route
Is that necessary? See for example @MitchellGoodwin's new PR that implements modal bottom sheet using delegatedTransition. Could you do something similar or am I misunderstanding?
We can't listen to predictive back events
The problem is that predictive back events from WidgetsBinding._backGestureObserver are sent only to the active observer.
This pattern of notifying the first observer keeps coming back to haunt me. I should have tried harder to move away from it for predictive back.
What if we change it to notify all observers? I think that's the way that this pattern was meant to be used. However, we still need a return value, so it would have to be something like this:
WidgetsBindingObserver? _backGestureObserver;
Future<bool> _handleStartBackGesture(Map<String?, Object?> arguments) {
_backGestureObserver = null;
final PredictiveBackEvent backEvent = PredictiveBackEvent.fromMap(arguments);
bool handled = false;
for (final WidgetsBindingObserver observer in List<WidgetsBindingObserver>.of(_observers)) {
if (observer.handleStartBackGesture(backEvent)) {
_backGestureObserver = observer;
handled = true;
}
}
return Future<bool>.value(handled);
}
@maRci002 How did it go when using delegatedTransition? I tried the PR locally and it didn't seem to move the incoming route at all. |
@maRci002 Do you still have plans to return to this PR? I'd be happy to help you review it. I do want to get this animation updated, so if not, maybe I can take over this PR again. |
Apologies for not addressing this pull request recently; I've been quite swamped. I do plan to continue working on it, especially now that the M3 page transition has been implemented. However, if time is of the essence, please feel free to take over and continue this PR. |
@maRci002 Thanks for following up. I'm winding down for the holidays here, so I will check on this PR again after the new year. |
Update: Caught up with Justin last week regarding this change, he plans to pick this up to finish. |
I've been working on implementing this here: https://github.com/TheLastFlame/flutter/tree/shared-elements-predictive-back It allows you to work with Hero, dialogs, and bottomsheets. However, there are still a few unresolved issues in the page transition implementation. I'd be happy to join the discussion. |
I was starting to make a demo for demoing and testing at the time, but temporarily abandoned it: screen-20250322-172103.mp4 |
autosubmit label was removed for flutter/flutter/154718, because This PR has not met approval requirements for merging. The PR author is not a member of flutter-hackers and needs 1 more review(s) in order to merge this PR.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
I wrote most of this PR but the bot requires 2 approvals 😄 .
Thank you so much, @justinmc, for your work the PR looks good to me. screen-20250520-092537.mp4
The spec says:
but I think the animation looks good now. |
Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 34465683+rkishan516@users.noreply.github.com Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 34270884+ferraridamiano@users.noreply.github.com Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 dacoharkes@google.com [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 jonahwilliams@google.com [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 mu7ammadkamel@hotmail.com fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 polinach@google.com Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 69134234+sutes-work@users.noreply.github.com runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 matanlurey@users.noreply.github.com Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#169181) 2025-05-20 ybz975218925@gmail.com Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 dacoharkes@google.com [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 matanlurey@users.noreply.github.com Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 kevmoo@users.noreply.github.com [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 bkonyi@google.com Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 engine-flutter-autoroll@skia.org Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 matanlurey@users.noreply.github.com Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 engine-flutter-autoroll@skia.org Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 maRci002@users.noreply.github.com Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 58529443+srujzs@users.noreply.github.com Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 737941+loic-sharma@users.noreply.github.com Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 mohellebiabdessalem@gmail.com fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 emmanuelferdman@gmail.com Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 56335976+stuuupidcat@users.noreply.github.com Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 48603081+TahaTesser@users.noreply.github.com Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 engine-flutter-autoroll@skia.org Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 sigurdm@google.com Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 15619084+vashworth@users.noreply.github.com Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 huy@nevercode.io docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 chris@bracken.jp macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 engine-flutter-autoroll@skia.org Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 parlough@gmail.com [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 jsimionato@google.com Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 47866232+chunhtai@users.noreply.github.com Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 34871572+gmackall@users.noreply.github.com [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 jonahwilliams@google.com [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 51901607+O-Hannonen@users.noreply.github.com TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 bruno.leroux@gmail.com Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 bkonyi@google.com [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 engine-flutter-autoroll@skia.org Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 matanlurey@users.noreply.github.com Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 jessy.yameogo@gmail.com Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 engine-flutter-autoroll@skia.org Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 58190796+MitchellGoodwin@users.noreply.github.com Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
…r#9305) Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 34465683+rkishan516@users.noreply.github.com Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 34270884+ferraridamiano@users.noreply.github.com Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 dacoharkes@google.com [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 jonahwilliams@google.com [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 mu7ammadkamel@hotmail.com fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 polinach@google.com Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 69134234+sutes-work@users.noreply.github.com runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 matanlurey@users.noreply.github.com Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#169181) 2025-05-20 ybz975218925@gmail.com Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 dacoharkes@google.com [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 matanlurey@users.noreply.github.com Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 kevmoo@users.noreply.github.com [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 bkonyi@google.com Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 engine-flutter-autoroll@skia.org Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 matanlurey@users.noreply.github.com Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 engine-flutter-autoroll@skia.org Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 maRci002@users.noreply.github.com Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 58529443+srujzs@users.noreply.github.com Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 737941+loic-sharma@users.noreply.github.com Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 mohellebiabdessalem@gmail.com fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 emmanuelferdman@gmail.com Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 56335976+stuuupidcat@users.noreply.github.com Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 48603081+TahaTesser@users.noreply.github.com Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 engine-flutter-autoroll@skia.org Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 sigurdm@google.com Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 15619084+vashworth@users.noreply.github.com Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 huy@nevercode.io docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 chris@bracken.jp macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 engine-flutter-autoroll@skia.org Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 parlough@gmail.com [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 jsimionato@google.com Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 47866232+chunhtai@users.noreply.github.com Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 34871572+gmackall@users.noreply.github.com [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 jonahwilliams@google.com [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 51901607+O-Hannonen@users.noreply.github.com TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 bruno.leroux@gmail.com Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 bkonyi@google.com [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 engine-flutter-autoroll@skia.org Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 matanlurey@users.noreply.github.com Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 jessy.yameogo@gmail.com Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 engine-flutter-autoroll@skia.org Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 58190796+MitchellGoodwin@users.noreply.github.com Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
…r#9305) Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 34465683+rkishan516@users.noreply.github.com Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 34270884+ferraridamiano@users.noreply.github.com Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 dacoharkes@google.com [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 jonahwilliams@google.com [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 mu7ammadkamel@hotmail.com fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 polinach@google.com Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 69134234+sutes-work@users.noreply.github.com runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 matanlurey@users.noreply.github.com Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#169181) 2025-05-20 ybz975218925@gmail.com Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 dacoharkes@google.com [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 matanlurey@users.noreply.github.com Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 kevmoo@users.noreply.github.com [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 bkonyi@google.com Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 engine-flutter-autoroll@skia.org Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 matanlurey@users.noreply.github.com Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 engine-flutter-autoroll@skia.org Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 maRci002@users.noreply.github.com Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 58529443+srujzs@users.noreply.github.com Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 737941+loic-sharma@users.noreply.github.com Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 mohellebiabdessalem@gmail.com fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 8847263+littleGnAl@users.noreply.github.com Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 emmanuelferdman@gmail.com Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 56335976+stuuupidcat@users.noreply.github.com Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 48603081+TahaTesser@users.noreply.github.com Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 engine-flutter-autoroll@skia.org Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 sigurdm@google.com Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 15619084+vashworth@users.noreply.github.com Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 huy@nevercode.io docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 chris@bracken.jp macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 engine-flutter-autoroll@skia.org Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 parlough@gmail.com [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 jsimionato@google.com Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 47866232+chunhtai@users.noreply.github.com Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 34871572+gmackall@users.noreply.github.com [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 jonahwilliams@google.com [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 51901607+O-Hannonen@users.noreply.github.com TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 bruno.leroux@gmail.com Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 bkonyi@google.com [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 engine-flutter-autoroll@skia.org Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 matanlurey@users.noreply.github.com Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 jessy.yameogo@gmail.com Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 engine-flutter-autoroll@skia.org Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 58190796+MitchellGoodwin@users.noreply.github.com Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
This PR adds a shared element transition for predictive back navigation, based on the specification found here: https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#shared-element-transition.
A new transition builder added:
PredictiveBackPageSharedElementTransitionsBuilder
, which constructs the shared element transition version.Code sample
predictive_back_shared_element.webm
Partial fix for #153577