Add fallbackColor for PredictiveBackPageTransitionBuilder and PredictiveBackFullscreenPageTransitionBuilder#182690
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a fallbackColor property to PredictiveBackPageTransitionBuilder and PredictiveBackFullscreenPageTransitionBuilder. This allows customizing the background color when the predictive back transition is not supported and a fallback transition is used. The changes are implemented correctly by passing the fallbackColor to the respective fallback transition builders. New tests are added to verify this functionality.
My review focuses on improving the new tests to ensure they are robust. I've suggested a change to one of the tests to verify the color during the transition animation, not just at the end.
| await tester.tap(find.text('push')); | ||
| await tester.pump(const Duration(milliseconds: 400)); | ||
|
|
||
| final Finder coloredBoxFinder = find.byType(ColoredBox).last; | ||
| expect(coloredBoxFinder, findsOneWidget); | ||
| final ColoredBox coloredBox = tester.widget<ColoredBox>(coloredBoxFinder); | ||
| expect(coloredBox.color, Colors.black); | ||
|
|
||
| await tester.pumpAndSettle(); | ||
| }, variant: TargetPlatformVariant.all()); |
There was a problem hiding this comment.
The current test only verifies the state after the animation has completed, where the background color is transparent. This doesn't confirm that the fallbackColor is used during the transition.
This change pumps the animation to its midpoint and asserts that the fallbackColor is being painted, making the test more robust and aligning it with the test for PredictiveBackFullscreenPageTransitionsBuilder. The misleading comment is also corrected.
| await tester.tap(find.text('push')); | |
| await tester.pump(const Duration(milliseconds: 400)); | |
| final Finder coloredBoxFinder = find.byType(ColoredBox).last; | |
| expect(coloredBoxFinder, findsOneWidget); | |
| final ColoredBox coloredBox = tester.widget<ColoredBox>(coloredBoxFinder); | |
| expect(coloredBox.color, Colors.black); | |
| await tester.pumpAndSettle(); | |
| }, variant: TargetPlatformVariant.all()); | |
| // Pump till animation is about half-way through. | |
| await tester.tap(find.text('push')); | |
| await tester.pump(); | |
| await tester.pump(const Duration(milliseconds: 200)); | |
| // Verify that the render box is painting the right color for scaffolded pages. | |
| final RenderBox scaffoldedRenderBox = tester.firstRenderObject<RenderBox>( | |
| find.byType(MaterialApp), | |
| ); | |
| expect(scaffoldedRenderBox, paints..rect(color: Colors.black)); |
References
- Code should be tested effectively. The current test is weak as it only checks the final state of an animation, not the state during the animation where the color change is visible. (link)
|
autosubmit label was removed for flutter/flutter/182690, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR. |
…nd PredictiveBackFullscreenPageTransitionBuilder (flutter/flutter#182690)
…nd PredictiveBackFullscreenPageTransitionBuilder (flutter/flutter#182690)
Roll Flutter from d3dd7744e81f to d18214307703 (33 revisions) flutter/flutter@d3dd774...d182143 2026-03-06 [email protected] Roll Packages from 8d5c5cd to fe3de64 (2 revisions) (flutter/flutter#183308) 2026-03-06 [email protected] Roll Dart SDK from 1b51451cdb99 to 7c7c1e3d024d (2 revisions) (flutter/flutter#183294) 2026-03-06 [email protected] Roll Dart SDK from 9ac06cdd1801 to 1b51451cdb99 (9 revisions) (flutter/flutter#183289) 2026-03-06 [email protected] Add GitHub workflows to assist with release tasks (flutter/flutter#181978) 2026-03-06 [email protected] [Impeller] Fix new convex path shadow generation in perspective (flutter/flutter#183187) 2026-03-06 [email protected] Roll pub packages (flutter/flutter#183178) 2026-03-05 [email protected] fix: use double quotes in settings.gradle.kts template (flutter/flutter#183081) 2026-03-05 [email protected] Add fallbackColor for PredictiveBackPageTransitionBuilder and PredictiveBackFullscreenPageTransitionBuilder (flutter/flutter#182690) 2026-03-05 [email protected] Simplify TesterContextGLES (multithreading logic not needed), and enable some tests that now pass (flutter/flutter#183250) 2026-03-05 [email protected] Roll Skia from a94df1cdabb0 to a69ef43650ee (14 revisions) (flutter/flutter#183280) 2026-03-05 [email protected] Windowing implementation of `showDialog` that uses a native desktop window to display the content (flutter/flutter#181861) 2026-03-05 [email protected] Build CocoaPod plugin frameworks for Add to App FlutterPluginRegistrant (flutter/flutter#183239) 2026-03-05 [email protected] Extend the Linux web_skwasm_tests_1 timeout to 45 minutes (flutter/flutter#183247) 2026-03-05 [email protected] Update Dart to 3.12 beta 2 (flutter/flutter#183251) 2026-03-05 [email protected] Replace the rest of the references to `flutter/engine` with `flutter/flutter` (flutter/flutter#182938) 2026-03-05 [email protected] chore: convert android_verified_input to pub-workspace (flutter/flutter#183175) 2026-03-05 [email protected] Add await to flutter_test callsites (flutter/flutter#182983) 2026-03-05 [email protected] [iOS] Skip gesture recognizer reset workaround on iOS 26+ (flutter/flutter#183186) 2026-03-05 [email protected] Add warning for plugins not migrated to UIScene (flutter/flutter#182826) 2026-03-05 [email protected] Roll Fuchsia Linux SDK from JJw5EJ87vLGqFVl4h... to 8ay15_eQOEgPHCypm... (flutter/flutter#183255) 2026-03-05 [email protected] Roll Skia from ada0b7628c79 to a94df1cdabb0 (2 revisions) (flutter/flutter#183249) 2026-03-05 [email protected] Roll Packages from 82baf93 to 8d5c5cd (2 revisions) (flutter/flutter#183269) 2026-03-05 [email protected] Add `UnlabaledLeafNodeEvaluation` (flutter/flutter#182872) 2026-03-04 [email protected] Re-specify the ndk version in various test apps, to prevent ndk download (flutter/flutter#183134) 2026-03-04 [email protected] Eliminate rebuilds for Scaffold FAB animation (flutter/flutter#182331) 2026-03-04 [email protected] Add Michal Kucharski to AUTHORS (flutter/flutter#182366) 2026-03-04 [email protected] Merge changelog from 3.41.4 stable. (flutter/flutter#183243) 2026-03-04 [email protected] Allow stylus support on windows (flutter/flutter#165323) 2026-03-04 [email protected] Fix docs on SingletonFlutterWindow.supportsShowingSystemContextMenu (flutter/flutter#183142) 2026-03-04 [email protected] Roll Packages from 9083bc9 to 82baf93 (5 revisions) (flutter/flutter#183240) 2026-03-04 [email protected] Fixes FocusHighlightMode on Android when typing in software keyboard (flutter/flutter#180753) 2026-03-04 [email protected] Make compileShader() retry without sksl if it fails with sksl. (flutter/flutter#183146) 2026-03-04 [email protected] [web] Use pointer-events: auto for non-interactive leaf semantics nodes (flutter/flutter#183077) 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: ...
…iveBackFullscreenPageTransitionBuilder (flutter#182690) Serves as a workaround for flutter#179585.
Serves as a workaround for #179585.