Reimplemented StretchingOverscrollIndicator with Simulation ported from Android 12.#173849
Reimplemented StretchingOverscrollIndicator with Simulation ported from Android 12.#173849auto-submit[bot] merged 28 commits intoflutter:masterfrom
Conversation
There was a problem hiding this comment.
Code Review
This pull request is a great improvement to the StretchingOverscrollIndicator, replacing the previous animation logic with a more physically realistic SpringSimulation. This results in a much more natural feel, especially for high-velocity flings, aligning it better with native Android behavior. The code is well-structured, and the addition of a regression test is appreciated.
I've found a critical issue related to animation controller lifecycle management that could lead to race conditions. I've also identified a couple of medium-severity issues related to code clarity and maintainability. Addressing these will make the implementation more robust and easier to understand.
Overall, this is a high-quality contribution.
|
Thank you for this amazing change! My first round of review focuses on the constants for the spring simulation. |
6bad613 to
5cf9c30
Compare
|
data_table_2 tests have been resolved, the only Google testing failures now are from image diffs. |
|
Looked through the screenshot tests, they all look intended with this PR. |
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
…orted from Android 12. (flutter/flutter#173849)
Roll Flutter from 5b87203 to b2de367 (38 revisions) flutter/flutter@5b87203...b2de367 2025-12-08 [email protected] Roll Packages from b17d3ff to 33a9a81 (3 revisions) (flutter/flutter#179579) 2025-12-08 [email protected] Roll Fuchsia Linux SDK from XCoAHsnYnKrvuWU2o... to _pSztGZvEA3-Ry-GW... (flutter/flutter#179575) 2025-12-08 [email protected] Implementation of `TestWindowingOwner` for testing multi-window (flutter/flutter#179355) 2025-12-08 [email protected] Roll Dart SDK from 11efe37089a7 to 75899721aa42 (2 revisions) (flutter/flutter#179573) 2025-12-08 [email protected] Roll Skia from 0c016e4aefd5 to b1936c760645 (8 revisions) (flutter/flutter#179568) 2025-12-08 [email protected] Roll Skia from 3c5f9e0c9269 to 0c016e4aefd5 (1 revision) (flutter/flutter#179565) 2025-12-08 [email protected] Roll Dart SDK from 1a6c6f6398af to 11efe37089a7 (1 revision) (flutter/flutter#179564) 2025-12-07 [email protected] Roll Skia from 4830855b6f84 to 3c5f9e0c9269 (1 revision) (flutter/flutter#179561) 2025-12-07 [email protected] Roll Skia from d5a6b6af6d12 to 4830855b6f84 (1 revision) (flutter/flutter#179557) 2025-12-07 [email protected] Roll Fuchsia Linux SDK from KilaJW3p3J_0yUDtV... to XCoAHsnYnKrvuWU2o... (flutter/flutter#179551) 2025-12-06 [email protected] Roll Skia from 33b32cecb287 to d5a6b6af6d12 (1 revision) (flutter/flutter#179540) 2025-12-06 [email protected] Roll Dart SDK from ea201dd2ef12 to 1a6c6f6398af (1 revision) (flutter/flutter#179539) 2025-12-06 [email protected] Roll Dart SDK from d1d30ee8d5a0 to ea201dd2ef12 (1 revision) (flutter/flutter#179537) 2025-12-06 [email protected] Roll Dart SDK from 30c906aa00f2 to d1d30ee8d5a0 (1 revision) (flutter/flutter#179534) 2025-12-06 [email protected] Roll Skia from dccd48c6c6ab to 33b32cecb287 (2 revisions) (flutter/flutter#179531) 2025-12-06 [email protected] Roll Fuchsia Linux SDK from vDeTl_KBeLJY8nCAx... to KilaJW3p3J_0yUDtV... (flutter/flutter#179530) 2025-12-06 [email protected] Roll Dart SDK from f3690c23d422 to 30c906aa00f2 (2 revisions) (flutter/flutter#179529) 2025-12-06 [email protected] Roll Skia from e19670f70406 to dccd48c6c6ab (6 revisions) (flutter/flutter#179524) 2025-12-05 [email protected] Make sure that a CupertinoFormRow doesn't crash in 0x0 environment (flutter/flutter#178979) 2025-12-05 [email protected] Make sure that a CupertinoContextMenuAction doesn't crash in 0x0 envi… (flutter/flutter#178721) 2025-12-05 [email protected] Make sure that a CupertinoRadio doesn't crash in 0x0 environment (flutter/flutter#179378) 2025-12-05 [email protected] Make sure that a CupertinoSearchTextField doesn't crash in 0x0 enviro… (flutter/flutter#179487) 2025-12-05 [email protected] Make sure that a CupertinoPicker doesn't crash in 0x0 environment (flutter/flutter#179258) 2025-12-05 [email protected] Make sure that a CupertinoAlertDialog doesn't crash in 0x0 environment (flutter/flutter#178858) 2025-12-05 [email protected] Make sure that a CupertinoListTileChevron doesn't crash in 0x0 enviro… (flutter/flutter#179165) 2025-12-05 [email protected] Make sure that CupertinoNavigationBar doesn't crash in 0x0 environment (flutter/flutter#179235) 2025-12-05 [email protected] Replace dropdown button with dropdown menu (flutter/flutter#179095) 2025-12-05 [email protected] Make sure that a CupertinoCheckbox doesn't crash in 0x0 environment (flutter/flutter#178630) 2025-12-05 [email protected] Make sure that a CupertinoApp doesn't crash in 0x0 environment (flutter/flutter#178610) 2025-12-05 [email protected] Make sure that a CupertinoButton doesn't crash in 0x0 environment (flutter/flutter#178629) 2025-12-05 [email protected] Make sure that a CupertinoTimerPicker doesn't crash in 0x0 environment (flutter/flutter#178857) 2025-12-05 [email protected] Make sure that a CupertinoScrollbar doesn't crash in 0x0 environment (flutter/flutter#179442) 2025-12-05 [email protected] Roll Dart SDK from 0fcab487446d to f3690c23d422 (1 revision) (flutter/flutter#179517) 2025-12-05 [email protected] Update several comments related to theme normalization (flutter/flutter#179457) 2025-12-05 [email protected] Reimplemented StretchingOverscrollIndicator with Simulation ported from Android 12. (flutter/flutter#173849) 2025-12-05 [email protected] Roll Skia from a31411879251 to e19670f70406 (1 revision) (flutter/flutter#179511) 2025-12-05 [email protected] chore: mark tests as flaky (flutter/flutter#179518) 2025-12-05 [email protected] Roll Dart SDK from 42fe3327abca to 0fcab487446d (3 revisions) (flutter/flutter#179506) 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 ...
Fixed an issue #169659
This PR improves the StretchingOverscrollIndicator to better match native Android behavior.
This change ensures that momentum-based gestures produce a more natural and intuitive overscroll experience, especially for users accustomed to native Android scroll views.
Fling
3.mp4
Pull And Reduce
Also, a very similar animation is implemented when pulling as well.
3.mp4
Pre-launch Checklist
///).