Skip to content

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

Merged

Conversation

maRci002
Copy link
Contributor

@maRci002 maRci002 commented Sep 6, 2024

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
import 'package:flutter/material.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        brightness: Brightness.light,
        pageTransitionsTheme: const PageTransitionsTheme(
          builders: {
            TargetPlatform.android: PredictiveBackPageSharedElementTransitionsBuilder(),
          },
        ),
      ),
      home: const FirstScreen(),
    );
  }
}

class FirstScreen extends StatelessWidget {
  const FirstScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('First Screen'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.of(context).push(
              MaterialPageRoute(builder: (_) => const SecondScreen()),
            );
          },
          child: const Text('Go to Second Screen'),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  const SecondScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Theme(
      data: ThemeData(brightness: Brightness.dark),
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Second Screen'),
        ),
        body: const Center(
          child: Text('Hello, Predictive back!'),
        ),
      ),
    );
  }
}
predictive_back_shared_element.webm

Partial fix for #153577

@flutter-dashboard
Copy link

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.

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Sep 6, 2024
@maRci002
Copy link
Contributor Author

maRci002 commented Sep 6, 2024

cc @justinmc I have opened this PR as we discussed. I will add tests and documentation once the PR looks good.

@maRci002 maRci002 force-pushed the predictive_back-shared_element_transition branch from c86b3ff to 2ed9df2 Compare September 9, 2024 07:19
@Piinks Piinks requested a review from justinmc September 11, 2024 18:07
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 @maRci002 thanks for contributing! It looks like there are some failing checks, can you take a look?

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.

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:

  1. 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.

  2. 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(
Copy link
Contributor

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.

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 yeah, the PredictiveBackPageTransitionBuilder should provide the new transition out of the box, and the old one could be renamed or removed.

@Piinks
Copy link
Contributor

Piinks commented Oct 16, 2024

@maRci002 do you plan to continue working on this PR?

@maRci002
Copy link
Contributor Author

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.

@maRci002 maRci002 marked this pull request as draft October 17, 2024 08:36
@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.

@maRci002
Copy link
Contributor Author

maRci002 commented Nov 4, 2024

On Android 14, the Settings app uses the Full Screen Surfaces animation, while on Android 15, the Settings app uses the Shared Element transition. More about these concepts: GitHub Issue Comment.

Here is the predictive back animation on Android 15 (with both Transition animation scale and Animator duration scale set to 10x in the Developer options):

output.mp4

2. After releasing the gesture, the outgoing route fades out on native, but on your branch I see it scale and then suddenly disappear.

The only problem is that we are driving the route via _PredictiveBackGestureDetector. At this point, the page transition is nearly 100%, so I can't rely on the fade-out starting at 80%, because the user might change their mind and cancel the predictive back gesture. This means the _PredictiveBackGestureDetector should provide a phase to let the builder know whether it's in the commit phase. I think the actual transition should handle its own animation when the commit starts.

@justinmc
Copy link
Contributor

justinmc commented Nov 4, 2024

@maRci002 Can you re-upload that video? It doesn't ever start playing for me.

@maRci002
Copy link
Contributor Author

maRci002 commented Nov 5, 2024

@maRci002 Can you re-upload that video? It doesn't ever start playing for me.

settings.app.predictive.back.mp4

Here is the default back button behavior; this will be implemented by #142352:

settings.app.back.button.mp4
  1. 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 Allow mixing route transitions in one app. #150031.

When route.popGestureInProgress == false, we fall back to ZoomPageTransitionsBuilder, which might be replaced by #142352. This means the previous route will animate offscreen by default. For reference, see the attached video about Android 15 back button behavior.
However, I can use #150031; the previous route should also be scaled/transitioned, which means I need actual predictive back events. The problem is that predictive back events from WidgetsBinding._backGestureObserver are sent only to the active observer.

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();
      },
    );
  }
}

@maRci002 maRci002 force-pushed the predictive_back-shared_element_transition branch from 2ed9df2 to 3e5828c Compare November 5, 2024 14:16
@maRci002
Copy link
Contributor Author

maRci002 commented Nov 5, 2024

2. After releasing the gesture, the outgoing route fades out on native, but on your branch I see it scale and then suddenly disappear.

I made some changes and set timeDilation to 2.0, but unfortunately, my emulator is a bit slow.

fade_out.mp4

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.

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?

https://github.com/flutter/flutter/pull/157568/files#diff-46d8c09c856d9697ebf30eb9e88b0eab83a0e3ca439711968544927bc9ec4daaR107

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);
  }

@justinmc
Copy link
Contributor

@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.

@justinmc
Copy link
Contributor

@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.

@maRci002
Copy link
Contributor Author

maRci002 commented Dec 8, 2024

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.

@justinmc
Copy link
Contributor

@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.

@Piinks
Copy link
Contributor

Piinks commented Feb 25, 2025

Update: Caught up with Justin last week regarding this change, he plans to pick this up to finish.

@TheLastFlame
Copy link

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.

@TheLastFlame
Copy link

TheLastFlame commented Mar 22, 2025

I was starting to make a demo for demoing and testing at the time, but temporarily abandoned it:

screen-20250322-172103.mp4

@justinmc justinmc added the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2025
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2025
Copy link
Contributor

auto-submit bot commented May 19, 2025

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.

  • Merge guidelines: A PR needs at least one approved review if the author is already part of flutter-hackers or two member reviews if the author is not a flutter-hacker before re-applying the autosubmit label. Reviewers: If you left a comment approving, please use the "approve" review action instead.

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 👍

I wrote most of this PR but the bot requires 2 approvals 😄 .

@justinmc justinmc added the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2025
@auto-submit auto-submit bot added this pull request to the merge queue May 19, 2025
Merged via the queue into flutter:master with commit 0b9225a May 19, 2025
77 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 19, 2025
@maRci002
Copy link
Contributor Author

Thank you so much, @justinmc, for your work the PR looks good to me.
I did notice a small bug: when you open the page and the animation is still ongoing, if you immediately perform the back gesture, it's not recognized. However, this can be fixed later.

screen-20250520-092537.mp4

@maRci002 do you remember why you animated both the size of the page and the padding?

The spec says:

Leave an 8 dp gap from the screen edge
Limit y-shift so the surface never passes the 8 dp screen margin

but I think the animation looks good now.

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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request May 21, 2025
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)
...
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
…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)
...
Ortes pushed a commit to Ortes/packages that referenced this pull request Jun 25, 2025
…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)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
f: material design flutter/packages/flutter/material repository. f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants