Justin McCandless
2c031ed023
Reland predictive back route transitions by default ( #173860 )
...
Relands https://github.com/flutter/flutter/pull/165832 by reverting
flutter/flutter#173809 .
2025-08-15 22:40:14 +00:00
auto-submit[bot]
0e57a627f5
Reverts "Predictive back route transitions by default ( #165832 )" ( #173809 )
...
<!-- start_original_pr_link -->
Reverts: flutter/flutter#165832
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Breaks `Linux_pixel_7pro
embedded_android_views_integration_test`:
-
https://ci.chromium.org/ui/p/flutter/builders/prod/Linux_pixel_7pro%20embedded_android_views_integration_test/8918/overview
-
https://ci.chromium.org/ui/p/flutter/builders/prod/Linux_pixel_7pro%20embedded_android_views_integration_test/8917/overview
```txt
[2025-08-14 16:01:17.600761] [STDOUT] stdout: [ +1 ms] Expecte
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: justinmc
<!-- end_original_pr_author -->
<!-- start_reviewers -->
Reviewed By: {QuncCccccc}
<!-- end_reviewers -->
<!-- start_revert_body -->
This change reverts the following previous change:
This PR turns on predictive back route transitions by default on supported Android devices.
With https://github.com/flutter/flutter/pull/154718 , the default (PredictiveBackPageTransitionsBuilder) is the [shared element transition](https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#shared-element-transition ). The [full screen transition](https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#full-screen-surfaces ) is also available by using PredictiveBackFullScreenPageTransitionsBuilder.
Original PR: https://github.com/flutter/flutter/pull/146788
Depends on: https://github.com/flutter/flutter/pull/154718
When this lands in stable, the docs should be updated: https://docs.flutter.dev/platform-integration/android/predictive-back
<!-- end_revert_body -->
Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-08-14 23:38:48 +00:00
Justin McCandless
d1e2019a94
Predictive back route transitions by default ( #165832 )
...
This PR turns on predictive back route transitions by default on
supported Android devices.
With https://github.com/flutter/flutter/pull/154718 , the default
(PredictiveBackPageTransitionsBuilder) is the [shared element
transition](https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#shared-element-transition ).
The [full screen
transition](https://developer.android.com/design/ui/mobile/guides/patterns/predictive-back#full-screen-surfaces )
is also available by using
PredictiveBackFullScreenPageTransitionsBuilder.
Original PR: https://github.com/flutter/flutter/pull/146788
Depends on: https://github.com/flutter/flutter/pull/154718
When this lands in stable, the docs should be updated:
https://docs.flutter.dev/platform-integration/android/predictive-back
2025-08-14 20:39:12 +00:00
Loïc Sharma
384331e171
Migrate to list and builder Sliver convenience constructors ( #173011 )
...
In 2022, we introduced new convenience constructors like
`SliverList.builder` and `SliverList.list`. Unfortunately, LLMs like
Gemini seem to prefer the delegate pattern even when these convenience
constructors are usable. This updates Flutter's docs, code, and tests to
use these convenience constructors where possible. Hopefully this will
nudge LLMs to consider using the new APIs :)
I migrated 80% of the code by hand, and 20% using Gemini CLI. See
[go/loic-ai-log](http://goto.google.com/loic-ai-log ) (Google internal)
for details.
There's a few locations that I wasn't able to migrate to the convenience
constructors due to missing APIs. I filed the following issues:
1. https://github.com/flutter/flutter/issues/173018
2. https://github.com/flutter/flutter/issues/173019
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code ).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-08-04 22:32:22 +00:00
Kate Lovett
a04fb324be
Bump Dart to 3.8 and reformat ( #171703 )
...
Bumps the Dart version to 3.8 across the repo (excluding
engine/src/flutter/third_party) and applies formatting updates from Dart
3.8.
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-07-07 17:58:32 +00:00
Michael Goderbauer
5491c8c146
Auto-format Framework ( #160545 )
...
This auto-formats all *.dart files in the repository outside of the
`engine` subdirectory and enforces that these files stay formatted with
a presubmit check.
**Reviewers:** Please carefully review all the commits except for the
one titled "formatted". The "formatted" commit was auto-generated by
running `dev/tools/format.sh -a -f`. The other commits were hand-crafted
to prepare the repo for the formatting change. I recommend reviewing the
commits one-by-one via the "Commits" tab and avoiding Github's "Files
changed" tab as it will likely slow down your browser because of the
size of this PR.
---------
Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
2024-12-19 20:06:21 +00:00
Polina Cherkasova
baf739c8e6
Remove usage of testWidgetsWithLeakTracking. ( #140239 )
2023-12-15 14:13:31 -08:00
Kostia Sokolovskyi
96a4ae9dc5
Cover more test/widgets tests with leak tracking #10 ( #135143 )
2023-09-20 12:29:33 -07:00
Michael Goderbauer
fdc25a1700
Reland "Remove single-view assumption from ScrollPhysics ( #117503 )" ( #117916 )
...
This reverts commit c956121ac098b91061bfc0a93c930121ff3279ba.
2023-01-03 21:34:08 +00:00
Xilai Zhang
c956121ac0
Revert "Remove single-view assumption from ScrollPhysics ( #117503 )" ( #117647 )
...
This reverts commit 999356b776f70132d569a37f13f65333a1bb0779.
2022-12-27 21:22:16 +00:00
Michael Goderbauer
999356b776
Remove single-view assumption from ScrollPhysics ( #117503 )
...
* Remove single-view assumption from ScrollPhysics
* fix scrollable_dispose_test.dart
* add deprecated method back
2022-12-22 21:54:09 +00:00
Michael Goderbauer
81bc54be75
Enable use_colored_box lint ( #117370 )
2022-12-20 14:09:55 -08:00
Michael Goderbauer
d5fbc3750e
Remove unused code from tests ( #104550 )
2022-05-25 09:38:09 -07:00
Michael Goderbauer
51bcdb9407
super parameters for framework ( #100905 )
2022-04-13 22:38:40 -07:00
Ian Hickson
61a0add286
Enable avoid_redundant_argument_values lint ( #91409 ) ( #91462 )
2021-10-08 09:25:14 -07:00
Zachary Anderson
b9d2177da0
Revert "Enable avoid_redundant_argument_values lint ( #91409 )" ( #91461 )
...
This reverts commit 5fd259be244244e14ff87fee9b6a721625f952cd.
2021-10-07 21:11:07 -07:00
Ian Hickson
5fd259be24
Enable avoid_redundant_argument_values lint ( #91409 )
2021-10-07 20:13:02 -07:00
Alexandre Ardhuin
157bc92d4a
end of sort_child_properties_last ( #82457 )
2021-05-13 13:39:04 -07:00
Phil Quitslund
61c30c41b2
fix sort_directives violations ( #80817 )
2021-04-21 13:49:03 -07:00
Kate Lovett
e40610d67e
Automatically applying Scrollbars on desktop platforms with configurable ScrollBehaviors ( #78588 )
2021-04-02 16:40:17 -05:00
Sam Rawlins
894fdea860
Remove "unnecessary" imports in test/widgets ( #75952 )
2021-02-16 16:21:04 -08:00
Greg Spencer
7181c7a86a
Convert some more widget tests to NNBD ( #68160 )
2020-10-15 14:27:04 -07:00
Alexandre Ardhuin
4d7525f05c
Opt out nnbd in packages/flutter ( #59186 )
...
* add language version 2.8 in packages/flutter
* enable non-nullable analyzer flag
2020-06-11 14:11:30 +02:00
Dan Field
444b13b895
Colored box and container optimization ( #50979 )
2020-02-26 16:04:35 -08:00
Ian Hickson
449f4a6673
License update ( #45373 )
...
* Update project.pbxproj files to say Flutter rather than Chromium
Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright.
* Update the copyright notice checker to require a standard notice on all files
* Update copyrights on Dart files. (This was a mechanical commit.)
* Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine.
Some were already marked "The Flutter Authors", not clear why. Their
dates have been normalized. Some were missing the blank line after the
license. Some were randomly different in trivial ways for no apparent
reason (e.g. missing the trailing period).
* Clean up the copyrights in non-Dart files. (Manual edits.)
Also, make sure templates don't have copyrights.
* Fix some more ORGANIZATIONNAMEs
2019-11-27 15:04:02 -08:00
LongCatIsLooong
22ea031e28
Fix ScrollbarPainter thumbExtent calculation and add padding ( #31763 )
...
- Fixed extentInside calculation in ScrollMetrics
- Added asserts to extentInside getter, as well as ScrollPosition.applyContentDimensions to enforce minScrollExtent <= maxScrollExtent
- Added padding to ScrollbarPainter, updated implementation. Took care of some edge cases.
- Changed some scroll bar constants on Cupertino side.
2019-05-29 16:52:21 -07:00
Alexandre Ardhuin
d927c93310
Unnecessary new ( #20138 )
...
* enable lint unnecessary_new
* fix tests
* fix tests
* fix tests
2018-09-12 08:29:29 +02:00
Michael Goderbauer
7984f6e043
Implicit a11y scrolling for iOS (and caching in Viewports) ( #17021 )
2018-05-04 10:48:06 -07:00
xster
152f5258b0
Let RenderSliverFixedExtentBoxAdapter handle disappearing top items ( #12919 )
...
* fix with first part of test
* Test without reshifting
* Let sliver fixed extend list also handle disappearing top items.
2017-11-08 17:06:46 -08:00
Adam Barth
d4e52ccb7e
Add RTL support to Scrollbar ( #11843 )
...
When scrolling vertically, the scrollbar is on the left in RTL.
2017-08-30 10:04:07 -07:00
Hans Muller
3681aee5a4
Selectively enable page scrolling in the gallery animation demo ( #9845 )
2017-05-05 16:02:25 -07:00
Adam Barth
c288c7064f
Refactor scrolling code to prepare for nested scrolling ( #9575 )
...
This patch reworks some of the guts of scrolling to make it easier to
implement nested scrolling effects. The actually nested scrolling effect
will be included in a later patch.
2017-04-24 23:32:55 -07:00
Adam Barth
fd51093146
Rename SliverPadding.child to SliverPadding.sliver ( #8757 )
...
The new name follows the pattern of the name suggesting which layout
protocol the parent expects the child to speak.
Fixes #8664
2017-03-14 14:07:13 -07:00
Ian Hickson
8eac6cd0da
Test API improvements: pumpAndSettle, autogenerate pointer IDs ( #8751 )
2017-03-13 16:27:15 -07:00
Chris Bracken
46291903e0
Declare locals final where not reassigned (tests) ( #8566 )
2017-03-03 17:43:22 -08:00
Adam Barth
e0b12ca17e
Two becomes one ( #8253 )
...
Rename all the "2" classes related to scrolling to remove the "2". Now that the
old scrolling code is gone, we don't need to use the suffix.
2017-02-17 14:06:15 -08:00
Adam Barth
fd30f63161
Replace Scrollbar with Scrollbar2 ( #8133 )
2017-02-14 08:55:16 -08:00
Alexandre Ardhuin
d1d1c50cbe
prefer const constructors ( #8024 )
2017-02-09 00:57:38 -08:00
Ian Hickson
83a4cf269f
Port AppBar to Scrollable2 ( #7996 )
...
Move the back button and drawer opening logic into the app bar.
Move the tap-status-bar-to-scroll-to-top logic to using
ScrollControllers. Provide a PrimaryScrollController and a `primary`
flag on scroll views.
Make it possible to track when a route becomes or stops being poppable.
2017-02-08 18:16:19 -08:00
Adam Barth
06f879b57e
Add ScrollController.initialScrollOffset ( #7916 )
...
Also, move the creation of the ScrollPosition to ScrollController.
Finally, remove TestScrollable in favor of CustomScrollView, which is the
production version of this widget.
2017-02-06 22:15:36 -08:00
Adam Barth
7f2dc47094
Add ScrollController ( #7910 )
...
If you pass a ScrollController to a Scrollable2, you can use the controller to
read and write the scroll offset without having to find the Scrollable2State
object.
2017-02-06 17:09:00 -08:00
Ian Hickson
b6aec82e1b
AppBar -> PersistentHeader ( #7899 )
2017-02-06 10:29:26 -08:00
Ian Hickson
471e91d46f
SliverBlock->SliverList ( #7872 )
2017-02-03 17:14:00 -08:00
Adam Barth
072cce88d6
Reparameterize Scrollable2 ( #7853 )
...
This patch makes a number of changes to how you can configure a
Scrollable2:
- The ScrollPhysics is now responsible for creating the ScrollPosition.
You can override the ScrollPhysics by supplying a `physics` argument
to `Scrollable`, and the new physics you supply will be applied to
the default physics inherited from the ScrollBehavior.
- This patch removes the ScrollPosition/AbsoluteScrollPosition split as
all clients were operating in pixels anyway and the split made the
code very difficult to follow.
- ScrollPosition no longer depends directly on Scrollable2State.
Instead, it depends on an abstract interface that Scrollable2State
implements. This change has two benefits:
a) It removes the circular dependency between ScrollPosition and
Scrollable2State, which lets us split the code for these classes
(and several other classes that got wrapped up in that cycle) into
separate libraries for easier maintenance.
b) ScrollPosition is no longer bound to Scrollable2, which means you
could use the behavior machinery to drive other sorts of widgets.
For example, we could use it to drive Scrollabe1 if we wanted.
2017-02-03 14:28:17 -08:00
Adam Barth
3231465769
Add PageView ( #7809 )
...
This widget is a start towards replacing PageableList. There are still a number
of features that we'll need to add before this widget can replace PageableList.
2017-02-02 16:16:20 -08:00
Ian Hickson
5928d221d4
ShrinkWrap Viewport ( #7790 )
2017-02-02 14:50:04 -08:00
Adam Barth
b082b93a3f
Simplify AbsoluteScrollPosition class structure ( #7785 )
...
Instead of using mixins and subclasses, we now use a `ScrollPhysics` delegate
to customize the scrolling phyics for Android and iOS. This change will make it
easier to customize the scroll position for paging.
2017-02-01 15:48:24 -08:00
Adam Barth
3a43fc88b6
Remove extraneous uses of scrollableKey from tests ( #7775 )
...
This patch removes unnecessary uses of scrollableKey from tests.
Scrollable2 will likely use a different mechanism for identifying
itself, so we want to focus on the uses of scrollableKey that will need
to be addressed in the new implementation.
2017-01-31 23:32:10 -08:00
Adam Barth
098af18393
Add SliverList ( #7727 )
...
Add SliverList
A SliverList is a linear layout of box children in a viewport that all
have a common, fixed extent along the scroll axis. The layout is similar
to a SliverBlock but more efficient.
2017-01-30 00:40:50 -08:00
Ian Hickson
078f6854cd
An evil test for slivers. ( #7671 )
...
Combines many sliver features at once.
2017-01-27 15:31:53 -08:00