Skip to content
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

Support ensureVisible/showOnScreen/showInViewport for 2D Scrolling #135182

Merged
merged 21 commits into from Sep 27, 2023

Conversation

Piinks
Copy link
Contributor

@Piinks Piinks commented Sep 20, 2023

Original PR for reference: #128812

Fixes #126299

This will enable default focus traversal and implicit scrolling in 2D.

I followed the same convention we have established for updating Scrollable methods to support 2D - by adding axisDirection parameters that are nullable. This allows developers to target a specific axis, or when null just behave naturally in 1D or handle both axes automatically in 2D.

Overview

  • Scrollable.ensureVisible is updated to call on private _performEnsureVisible for 1D and 2D scrollables. Not providing an axisDirection will automatically handle both axes in 2D, specifying an axisDirection allows users to have different alignments to reveal at.
  • ScrollPosition is updated to call viewport.getOffetToReveal with an axisDirection for 2D
  • RenderTwoDimensionalViewport now has
    • showOnScreen
    • showInViewport
    • getOffsetToReveal
  • I refactored some logic out of RenderViewportBase.showInViewport and moved it to (new) RenderAbstractViewport.applyTargetOffset so it could be reused in RenderTwoDimensionalViewport.showInViewport. This is because RenderTwoDimensionalViewport is a subclass of RenderAbstractViewport, not RenderViewportBase.
Screen.Recording.2023-06-13.at.2.49.46.PM.mov

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • 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 ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@Piinks Piinks added c: new feature Nothing broken; request for a new capability framework flutter/packages/flutter repository. See also f: labels. f: scrolling Viewports, list views, slivers, etc. p: two_dimensional_scrollables Issues pertaining to the two_dimensional_scrollables package labels Sep 20, 2023
@Piinks
Copy link
Contributor Author

Piinks commented Sep 22, 2023

packages/flutter/lib/src/widgets/scrollable.dart Outdated Show resolved Hide resolved
packages/flutter/lib/src/rendering/viewport.dart Outdated Show resolved Hide resolved
packages/flutter/lib/src/rendering/viewport.dart Outdated Show resolved Hide resolved
packages/flutter/lib/src/rendering/viewport.dart Outdated Show resolved Hide resolved
// as well as the vertical ScrollableState instance so its context can be
// used to check for other ancestor Scrollables in executing ensureVisible.
@override
(List<Future<void>>, ScrollableState) _performEnsureVisible(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason this inner state has to handle both the ensureVisible call for both axes? Are there cases where we actually want to limit the degrees of freedom to 1 axis when both axes are scrollable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason this inner state has to handle both the ensureVisible call for both axes?

Originally it was because the logic that bubbles up through scrollables/viewports in Scrollable.ensureVisible did not work for 2D since there are 2 scrollables and only one viewport.

@goderbauer made the case that someone might want to call ensureVisible on only one of the two axes, but now I am realizing I did not quite add support for that like I intended, let me fix that.

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 wait I walked this through and I I think it is right. When calling the static method Scrollable.ensureVisible, the inner horizontal scrollable will always come up first, so it always passes through here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Originally it was because the logic that bubbles up through scrollables/viewports in Scrollable.ensureVisible did not work for 2D since there are 2 scrollables and only one viewport.

Is that still the case? I was hoping we don't have to add that new axisDirection parameter to the interface since each scrollable knows its own axis.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I added the Axis parameter to the Scrollable.ensureVisible method for 2 reasons. It is a static method so the returned scrollable's axis is unknown. The other reason was @goderbauer's suggestion that we permit users to call ensureVisible on individual axes of the 2DScrollable in order to allow different alignments in each axis. So I added Axis in order for folks to pick one specifically.

Thinking about this though, the current implementation of Scrollable.ensureVisible works on nested scrollables and applies the same axis for each scrollable as it bubbles up through them throughout ensureVisible. We don't allow folks to set a different alignment for each one now, so I don't think we need to here now. Developers can always get that level granularity and control by accessing the actual scroll position and calling ensureVisible there. 👍

I removed Axis to keep the API cleaner.

Ultimately the axis does get passed to getOffsetToReveal later, since it is calling on that method on the viewport, which needs to know which axis' offset we are calculating.

@Piinks
Copy link
Contributor Author

Piinks commented Sep 26, 2023

Lot's of adjustments here, I think it is much better now. Thanks for the really good review @LongCatIsLooong!

RenderObject target,
double alignment, {
Rect? rect,
Axis? axis,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or why not make this required?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this tristate? if so we should either document what null means, especially when TwoD case. Can also consider turn this into an enum to be more readable

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not required. It is documented in the super class.

packages/flutter/lib/src/rendering/viewport.dart Outdated Show resolved Hide resolved
Axis? axis,
}) {
// One dimensional viewport has only one axis, override if set.
axis = this.axis;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be assert instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was an assertion earlier, but I changed it. Not sure which is better. I added docs saying in 1D it would be ignored since it is meant to be used in 2D.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will probably use a assert. It is hard to say whether this will be used in the future even for 1D case, better to make it stricter now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok! I will change these back to asserts. Good idea! That will make the use easier too in your comment above about the documentation.

packages/flutter/lib/src/widgets/scrollable.dart Outdated Show resolved Hide resolved
RenderObject? targetRenderObject,
}) {
assert(
false,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain a bit why this won't be called? I thought the ensureVisible in Scrollable will recursively find Scrollable and call this method. Wouldn't this be called after _HorizontalInnerDimension._performEnsureVisible is called?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The recursive logic for bubbling up through 1D Scrollables is different because each scrollable has its own viewport. As it iterates through each one, the next scrollable context is used to find the next viewport.
In 2D scrolling, there are two scrollables but only one viewport. The horizontal one will always be the inner one that is reached first, so it handles it for each scrollable and then returns the vertical scrollable to continue to original logic up through thew nest scrollable/viewport pair.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the code using Scrollable.maybeOf which would be grabbing _ScrollableScope where both horizontal and vertical will create?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup! It's after that where we use the context to find the next scrollable above that where it breaks for 2D. This is why I split out the implementations between _performEnsureVisible. Originally I had a is check in https://github.com/flutter/flutter/pull/128812/files/575eb0dd73ed49194fd3e7b6556c67a4092798b5 to handle 2D as a special case, which was less ideal.

};

// This step assumes the viewport's layout is up-to-date, i.e., if
// the position is changed after the last performLayout, the new scroll
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this something we should fix later? or it is something that shouldn't happen. If it is the former, we should add a TODO

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can, at least, it is the same in 1D, this is a copied comment. Maybe @LongCatIsLooong can speak more to why? I thought it was because we are about to performLayout anyways with a new offset to reveal, so if the scroll position change while we were getting to this point, it is not accounted for.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think it's referring to potential offset.pixels changes that may happen between frames or during the next frame's transient callback phase. But I'm not sure why I put the comment before the getTransformTo call instead of when computing offsetDifference, where the calculation actually depends on offset.pixels.

@@ -108,10 +108,21 @@ abstract interface class RenderAbstractViewport extends RenderObject {
/// when the offset of the viewport is changed by x then `target` also moves
/// by x within the viewport.
///
/// The optional [Axis] is used by
/// [RenderTwoDimensionalViewport.getOffsetToReveal] to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some where in this doc should mention that it can't be null when calling RenderTwoDimensionalViewport.getOffsetToReveal.

This is a bit weird though. The caller may not know which subclass the object is. Either all the subclass can handle null case or we force the type to be non null.

Copy link
Contributor

@chunhtai chunhtai Sep 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems not addressed yet

Copy link
Contributor Author

@Piinks Piinks Sep 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh! I rewrote the docs. It has to be nullable or it's a breaking change to require it, there was another comment thread here, it may have gotten lost..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did't want to require folks to provide the axis, it does not make sense to do so when it's 1D, there's only one Axis. I updated the docs and added assertions based on your other comment.

Axis? axis,
}) {
// One dimensional viewport has only one axis, override if set.
axis = this.axis;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will probably use a assert. It is hard to say whether this will be used in the future even for 1D case, better to make it stricter now.

RenderObject? targetRenderObject,
}) {
assert(
false,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the code using Scrollable.maybeOf which would be grabbing _ScrollableScope where both horizontal and vertical will create?

if (childParentData.isVisible) {
visitor(child);
}
visitor(child);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know what semantics order the children in cache extent will be?

The semantics tree will use the screen order to determine the child order, but I remember the cached children will not have rects. I guess it is probably using the rendering child order for 1D case, but I am not sure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They will be in the same traversal order as the children not in the cache extent. In 2D, after layout, all the children are reified so that regardless of what order the subclass did layout in, they are in the correct order for paint and semantics. This is dictated by the mainAxis, which by default (Axis.vertical) reads in row-major order.

Copy link
Contributor

@LongCatIsLooong LongCatIsLooong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Regarding the getOffsetToReveal interface, are there internal / registered customer tests that are currently relying on that interface so we can't change alignment and RevealedOffset to make it 2d?

};

// This step assumes the viewport's layout is up-to-date, i.e., if
// the position is changed after the last performLayout, the new scroll
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think it's referring to potential offset.pixels changes that may happen between frames or during the next frame's transient callback phase. But I'm not sure why I put the comment before the getTransformTo call instead of when computing offsetDifference, where the calculation actually depends on offset.pixels.

@override
RevealedOffset getOffsetToReveal(
RenderObject target,
double alignment, {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a bit difficult for me to make sense of a scalar alignment in a 2D world. Maybe mention that in the documentation of this method?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh never mind I think the current documentation is already saying this method is only doing 1-d scrolling.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes! Since this method is applied per axis, the alignment is specific to only that one axis of scrolling.

@Piinks
Copy link
Contributor Author

Piinks commented Sep 27, 2023

Regarding the getOffsetToReveal interface, are there internal / registered customer tests that are currently relying on that interface so we can't change alignment and RevealedOffset to make it 2d?

Since getOffsetToReveal is called from an individual ScrollPosition, it wouldn't be able to apply an offset for another ScrollPosition it does not know about since there are 2 ScrollPositions in 2D scrolling.

I tried in an earlier attempt at this in June, but it was super breaking and even more complex than this is.

@Piinks Piinks merged commit 80fb7bd into flutter:master Sep 27, 2023
66 of 67 checks passed
christopherfujino pushed a commit to christopherfujino/flutter that referenced this pull request Sep 27, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 28, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 29, 2023
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Sep 29, 2023
Roll Flutter from ff4a0f676f41 to 57b5c3cda000 (47 revisions)

flutter/flutter@ff4a0f6...57b5c3c

2023-09-29 engine-flutter-autoroll@skia.org Roll Packages from c070b0a to d0e9a0e (5 revisions) (flutter/flutter#135753)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from db4d3b5b3f59 to c52251a8b2d0 (1 revision) (flutter/flutter#135748)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8b4e633c65eb to db4d3b5b3f59 (2 revisions) (flutter/flutter#135745)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 09130bf5be97 to 8b4e633c65eb (1 revision) (flutter/flutter#135744)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from ccb30585d3f3 to 09130bf5be97 (1 revision) (flutter/flutter#135741)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2052515c44f3 to ccb30585d3f3 (1 revision) (flutter/flutter#135737)
2023-09-29 godofredoc@google.com Update localizations. (flutter/flutter#135691)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 485543c6765a to 2052515c44f3 (4 revisions) (flutter/flutter#135732)
2023-09-29 54558023+keyonghan@users.noreply.github.com Add arch property for windows_arm64 platform (flutter/flutter#135725)
2023-09-29 jonahwilliams@google.com [flutter_tools] remove VmService screenshot for native devices. (flutter/flutter#135462)
2023-09-29 polinach@google.com Pin leak_tracker before publishing breaking change. (flutter/flutter#135720)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from cc7c3c1f0f41 to 485543c6765a (8 revisions) (flutter/flutter#135717)
2023-09-28 katelovett@google.com Remove assertions on getOffsetToReveal (flutter/flutter#135634)
2023-09-28 fluttergithubbot@gmail.com Marks Linux_android flutter_gallery__start_up_delayed to be unflaky (flutter/flutter#135565)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from dbb60932a6ab to cc7c3c1f0f41 (2 revisions) (flutter/flutter#135701)
2023-09-28 yjbanov@google.com [tool] fallback to sigkill when closing Chromium (flutter/flutter#135521)
2023-09-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#135455)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9789dbc2ec3f to dbb60932a6ab (2 revisions) (flutter/flutter#135694)
2023-09-28 leroux_bruno@yahoo.fr Fix TabBarView.viewportFraction change is ignored (flutter/flutter#135590)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d9eaebd05851 to 9789dbc2ec3f (2 revisions) (flutter/flutter#135688)
2023-09-28 matheus@btor.com.br Added option to disable [NavigationDestination]s ([NavigationBar] destination widget) (flutter/flutter#132361)
2023-09-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Marks Windows module_custom_host_app_name_test to be unflaky" (flutter/flutter#135692)
2023-09-28 github@alexv525.com � Add more fields to `RefreshProgressIndicator` (flutter/flutter#135207)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 82b69dadc07a to d9eaebd05851 (1 revision) (flutter/flutter#135679)
2023-09-28 andrewrkolos@gmail.com Add API to read flavor from framework at run time (flutter/flutter#134179)
2023-09-28 fluttergithubbot@gmail.com Marks Windows module_custom_host_app_name_test to be unflaky (flutter/flutter#135567)
2023-09-28 tauu@h2overclock.de [web] fix: do not call onSubmitted of TextField when switching browser tabs on mobile web (flutter/flutter#134870)
2023-09-28 engine-flutter-autoroll@skia.org Roll Packages from 21c2ebb to c070b0a (3 revisions) (flutter/flutter#135676)
2023-09-28 tessertaha@gmail.com Fix `RangeSlider` throws an exception in a `ListView` (flutter/flutter#135667)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d09c2dbe2292 to 82b69dadc07a (2 revisions) (flutter/flutter#135675)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 495955a3b5de to d09c2dbe2292 (1 revision) (flutter/flutter#135669)
2023-09-28 zanderso@users.noreply.github.com Revert "Upload generated frame-request-pending stats" (flutter/flutter#135672)
2023-09-28 smartercallum@gmail.com Upload generated frame-request-pending stats (flutter/flutter#135645)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 937bf0432214 to 495955a3b5de (1 revision) (flutter/flutter#135665)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d2540d87fd96 to 937bf0432214 (1 revision) (flutter/flutter#135660)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c47faed53afe to d2540d87fd96 (2 revisions) (flutter/flutter#135652)
2023-09-28 tessertaha@gmail.com Update `TextField.style` documentation for Material 3 (flutter/flutter#135556)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 44aef2e61718 to c47faed53afe (1 revision) (flutter/flutter#135647)
2023-09-28 engine-flutter-autoroll@skia.org Manual roll Flutter Engine from be32dcc9117a to 44aef2e61718 (4 revisions) (flutter/flutter#135646)
2023-09-28 engine-flutter-autoroll@skia.org Manual roll Flutter Engine from f70f65f7a622 to be32dcc9117a (31 revisions) (flutter/flutter#135637)
2023-09-28 rmolivares@renzo-olivares.dev Implement SelectionArea single click/tap gestures (flutter/flutter#132682)
2023-09-27 katelovett@google.com Support ensureVisible/showOnScreen/showInViewport for 2D Scrolling (flutter/flutter#135182)
2023-09-27 caseycrogers@berkeley.edu made top level if checks gaurd clauses (flutter/flutter#135070)
2023-09-27 tessertaha@gmail.com Fix `SearchAnchor`'s search view isn't updated when the theme changes & widgets inside the search view do not inherit local themes (flutter/flutter#132749)
2023-09-27 godofredoc@google.com Config changes for linux coverage. (flutter/flutter#135604)
2023-09-27 engine-flutter-autoroll@skia.org Roll Packages from 619af75 to 21c2ebb (6 revisions) (flutter/flutter#135602)
...
christopherfujino pushed a commit to christopherfujino/flutter that referenced this pull request Oct 16, 2023
preview preview

++

++

++

++

++

rename artifact

fix compilation

remove test diff

restore changes to examples

get flutter build _preview working

hack prepare_package.dart

wip

fix test

fix another test

migrate more

fix another test

fix more

fix more

fix another test

fix test

fix another test

fix last test

add test

wip

get compiling

fix build_preview.dart path

get build preview and run -d preview to use artifact

cleanup todos and a test

fix unit test

cleanup

restore usptream prepare_package.dart

fix test

fix commands/build_test

fix hermetic/build_linux_test.dart

fix hermetic/build_macos_test

fix hermetic/build_test.dart

fix test

fix hermetic/build_ipa_test.dart

fix build_ios_test.dart

add more tests

fix build_ios_test

cleanup some todos, do not require pubspec.yaml in working dir

fix test

Convert relative to absolute import. (#135337)

Requested here: https://github.com/flutter/flutter/pull/133952#discussion_r1334860858

Move some tests from staging to prod (#135333)

This PR moves tests running on Pixel 7 Pro that use Skia from staging to prod.

[iOS,macOS] Clean up obsolete PlatformView warning (#135040)

PlatformViews have been supported without a custom engine build on iOS
for quite some time now, and are nearing support for macOS. Adds a link
to the website documentation covering creation of PlatformViews for iOS
and adds a TODO to do the same once the macOS PlatformView documentation
is ready.

Related: https://github.com/flutter/website/issues/9424

Roll Flutter Engine from e4bfdc1a67de to 564480337eae (4 revisions) (#135341)

https://github.com/flutter/engine/compare/e4bfdc1a67de...564480337eae

2023-09-22 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from ZyajVWocCHVIuJkzM... to M9rDyhmn7VY4iTxzQ... (flutter/engine#46215)
2023-09-22 skia-flutter-autoroll@skia.org Roll Dart SDK from 4ddff752a6b0 to 692273b46610 (1 revision) (flutter/engine#46212)
2023-09-22 skia-flutter-autoroll@skia.org Roll Skia from 78fced84372d to e9358f92110c (4 revisions) (flutter/engine#46211)
2023-09-22 bdero@google.com [Impeller] Incorporate backdrop filters in subpass coverage. (flutter/engine#46130)

Also rolling transitive DEPS:
  fuchsia/sdk/core/mac-amd64 from ZyajVWocCHVI to M9rDyhmn7VY4

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 564480337eae to 614859053262 (7 revisions) (#135362)

https://github.com/flutter/engine/compare/564480337eae...614859053262

2023-09-23 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from M9rDyhmn7VY4iTxzQ... to de4D1aoqF6LBk18Rd... (flutter/engine#46229)
2023-09-23 ychris@google.com [ios] Fix default assets url (flutter/engine#46214)
2023-09-23 skia-flutter-autoroll@skia.org Roll Skia from 15ccdeaba011 to 983f42f4c76b (1 revision) (flutter/engine#46223)
2023-09-23 chillers@google.com Revert "[Impeller] fail if software backend is chosen and Impeller is enabled on iOS" (flutter/engine#46217)
2023-09-23 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from QcxgV9KlY7j3o3b4j... to PCEkaltiQ-iEKlmEj... (flutter/engine#46221)
2023-09-22 jonahwilliams@google.com [Impeller] dont treat non-rects as rects. (flutter/engine#46218)
2023-09-22 skia-flutter-autoroll@skia.org Roll Skia from e9358f92110c to 15ccdeaba011 (1 revision) (flutter/engine#46216)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from QcxgV9KlY7j3 to PCEkaltiQ-iE
  fuchsia/sdk/core/mac-amd64 from M9rDyhmn7VY4 to de4D1aoqF6LB

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 614859053262 to ee27600dfbe2 (1 revision) (#135364)

https://github.com/flutter/engine/compare/614859053262...ee27600dfbe2

2023-09-23 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from PCEkaltiQ-iEKlmEj... to M-fNM9YP2Lpc8Y_Dj... (flutter/engine#46231)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from PCEkaltiQ-iE to M-fNM9YP2Lpc

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Marks Linux_android opacity_peephole_grid_of_alpha_savelayers_perf__e2e_summary to be flaky (#135119)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_android opacity_peephole_grid_of_alpha_savelayers_perf__e2e_summary"
}
-->
Issue link: https://github.com/flutter/flutter/issues/135118

Marks Linux_android flutter_gallery__start_up_delayed to be flaky (#134632)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_android flutter_gallery__start_up_delayed"
}
-->
Issue link: https://github.com/flutter/flutter/issues/134631

Marks Linux_android platform_channels_benchmarks to be flaky (#135106)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_android platform_channels_benchmarks"
}
-->
Issue link: https://github.com/flutter/flutter/issues/135105

Marks Mac_ios static_path_tessellation_perf_ios__timeline_summary to be unflaky (#133127)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios static_path_tessellation_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20static_path_tessellation_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Mac_ios animated_advanced_blend_perf_ios__timeline_summary to be unflaky (#132630)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios animated_advanced_blend_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20animated_advanced_blend_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Mac_ios very_long_picture_scrolling_perf_ios__e2e_summary to be unflaky (#134629)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios very_long_picture_scrolling_perf_ios__e2e_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20very_long_picture_scrolling_perf_ios__e2e_summary%22).
This test can be marked as unflaky.

Roll Flutter Engine from ee27600dfbe2 to 2daf5e7bb249 (1 revision) (#135371)

https://github.com/flutter/engine/compare/ee27600dfbe2...2daf5e7bb249

2023-09-24 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from de4D1aoqF6LBk18Rd... to W1uZC0_FbXyoCmwJ1... (flutter/engine#46238)

Also rolling transitive DEPS:
  fuchsia/sdk/core/mac-amd64 from de4D1aoqF6LB to W1uZC0_FbXyo

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Marks Linux_pixel_7pro picture_cache_perf__timeline_summary to be unflaky (#134118)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_pixel_7pro picture_cache_perf__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Linux_pixel_7pro%20picture_cache_perf__timeline_summary%22).
This test can be marked as unflaky.

Marks Mac_ios draw_points_perf_ios__timeline_summary to be unflaky (#127933)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios draw_points_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20draw_points_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Mac_ios dynamic_path_tessellation_perf_ios__timeline_summary to be unflaky (#133128)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios dynamic_path_tessellation_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20dynamic_path_tessellation_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Windows module_test to be unflaky (#134121)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Windows module_test"
}
-->
The issue https://github.com/flutter/flutter/issues/133639 has been closed, and the test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Windows%20module_test%22).
This test can be marked as unflaky.

Marks Mac_ios draw_vertices_perf_ios__timeline_summary to be unflaky (#134625)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios draw_vertices_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20draw_vertices_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Mac_ios draw_atlas_perf_ios__timeline_summary to be unflaky (#134626)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Mac_ios draw_atlas_perf_ios__timeline_summary"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Mac_ios%20draw_atlas_perf_ios__timeline_summary%22).
This test can be marked as unflaky.

Marks Windows_android channels_integration_test_win to be unflaky (#135374)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Windows_android channels_integration_test_win"
}
-->
The issue https://github.com/flutter/flutter/issues/134636 has been closed, and the test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Windows_android%20channels_integration_test_win%22).
This test can be marked as unflaky.

Marks Linux_pixel_7pro hello_world_impeller to be unflaky (#135372)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_pixel_7pro hello_world_impeller"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Linux_pixel_7pro%20hello_world_impeller%22).
This test can be marked as unflaky.

Fix failing test at master. (#135394)

Marks Linux_samsung_a02 new_gallery__transition_perf to be unflaky (#135373)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_samsung_a02 new_gallery__transition_perf"
}
-->
The test has been passing for [50 consecutive runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Linux_samsung_a02%20new_gallery__transition_perf%22).
This test can be marked as unflaky.

Revert "Marks Linux_samsung_a02 new_gallery__transition_perf to be unflaky" (#135399)

Reverts flutter/flutter#135373

Add a basic golden test for `CupertinoTextSelectionToolbar` (#135267)

Goden tests are easier to understand than `paints..` since the toolbar has a relatively complex path, and this should make PRs that make visual changes easier to review.

The current goldens don't look correct since I messed up the y offset of the tip of the arrow when the arrow is pointing up. Should be fixed in https://github.com/flutter/flutter/pull/133386

Roll Flutter Engine from 2daf5e7bb249 to 3ea1174ecfaa (4 revisions) (#135396)

https://github.com/flutter/engine/compare/2daf5e7bb249...3ea1174ecfaa

2023-09-25 zanderso@users.noreply.github.com In run_tests.py, separate Dart package unit tests from other tests (flutter/engine#46232)
2023-09-24 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SqWjDvrDsMfiisUoA... to VKAiabs4VzJ1Py-oA... (flutter/engine#46241)
2023-09-24 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from W1uZC0_FbXyoCmwJ1... to 0Jl20zAW45rRsTNEu... (flutter/engine#46240)
2023-09-24 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from M-fNM9YP2Lpc8Y_Dj... to SqWjDvrDsMfiisUoA... (flutter/engine#46239)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from M-fNM9YP2Lpc to VKAiabs4VzJ1
  fuchsia/sdk/core/mac-amd64 from W1uZC0_FbXyo to 0Jl20zAW45rR

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 3ea1174ecfaa to e1c1022c2d6d (2 revisions) (#135403)

https://github.com/flutter/engine/compare/3ea1174ecfaa...e1c1022c2d6d

2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from 983f42f4c76b to b8bc0c080aa8 (1 revision) (flutter/engine#46247)
2023-09-25 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from 0Jl20zAW45rRsTNEu... to SNqQGAfjWL3PbUABh... (flutter/engine#46246)

Also rolling transitive DEPS:
  fuchsia/sdk/core/mac-amd64 from 0Jl20zAW45rR to SNqQGAfjWL3P

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from e1c1022c2d6d to e6d3bac5c723 (2 revisions) (#135410)

https://github.com/flutter/engine/compare/e1c1022c2d6d...e6d3bac5c723

2023-09-25 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from VKAiabs4VzJ1Py-oA... to uY9WEf2tJxa1Hpp4v... (flutter/engine#46252)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from b8bc0c080aa8 to 31ceb1669d1c (1 revision) (flutter/engine#46249)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from VKAiabs4VzJ1 to uY9WEf2tJxa1

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Revert "Marks Linux_pixel_7pro hello_world_impeller to be unflaky" (#135388)

Reverts flutter/flutter#135372

Roll Flutter Engine from e6d3bac5c723 to 2c4c1108aa87 (1 revision) (#135424)

https://github.com/flutter/engine/compare/e6d3bac5c723...2c4c1108aa87

2023-09-25 49699333+dependabot[bot]@users.noreply.github.com Bump archive from 3.3.9 to 3.4.2 in /lib/web_ui (flutter/engine#46253)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Packages from 98ebcd3d9c05 to e548ae1d2045 (5 revisions) (#135431)

https://github.com/flutter/packages/compare/98ebcd3d9c05...e548ae1d2045

2023-09-23 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 2.21.7 to 2.21.8 (flutter/packages#4952)
2023-09-23 engine-flutter-autoroll@skia.org Manual roll Flutter from 893650416352 to f92884c7b846 (48 revisions) (flutter/packages#4985)
2023-09-22 geral.sbi2@gmail.com [image_picker_android] check if data from result is empty when picking a single img or video (flutter/packages#4836)
2023-09-22 me@nils.re [camera_android] Removes usage of `_ambiguate` method in tests (flutter/packages#4948)
2023-09-22 49699333+dependabot[bot]@users.noreply.github.com [sign_in]: Bump com.google.android.gms:play-services-auth from 20.6.0 to 20.7.0 in /packages/google_sign_in/google_sign_in_android/android (flutter/packages#4841)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 2c4c1108aa87 to 1ae3d20332f0 (4 revisions) (#135438)

https://github.com/flutter/engine/compare/2c4c1108aa87...1ae3d20332f0

2023-09-25 54558023+keyonghan@users.noreply.github.com Switch goma to reclient for Linux host engine targets (flutter/engine#45884)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from 7a49397a02b4 to e16a9b5b2c48 (1 revision) (flutter/engine#46258)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from 569a30fbdbdf to 7a49397a02b4 (2 revisions) (flutter/engine#46257)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from 31ceb1669d1c to 569a30fbdbdf (1 revision) (flutter/engine#46256)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

simulatedAccessibilityTraversal account for force merging (#135178)

fixes https://github.com/flutter/flutter/issues/135144

[Velocity Tracker] Fix: Issue 97761: Flutter Scrolling does not match iOS; inadvertent scrolling when user lifts up finger (#132291)

**Issue:** https://github.com/flutter/flutter/issues/97761

https://github.com/flutter/flutter/assets/1863934/53c5e0df-b85a-483c-a17d-bddd18db3aa9

The bug is very simple to understand - `velocity_tracker.dart` **only adds new samples while your finger is moving**.

**Therefore**, if you move your finger quickly & (important) stop suddenly with no extra movement, the last 3 samples will all be > 0 dy. Regardless of how long you wait, you will get movement when you lift up your finger.

**Logs from velocity_tracker.dart:**
Notice: all 3 `_previousVelocityAt` are `dy > 0` despite a 2 second delay since the last scroll
```
// start moving finger
flutter: addPosition dy:-464.0
flutter: addPosition dy:-465.0
flutter: addPosition dy:-466.0
flutter: addPosition dy:-467.0
flutter: addPosition dy:-468.0
flutter: addPosition dy:-469.0
flutter: addPosition dy:-470.0
// stop moving finger here, keep it still for 2 seconds & lift it up
flutter: _previousVelocityAt(-2) samples(-467.0, -468.0)) dy:-176.772140710624
flutter: _previousVelocityAt(-1) samples(-468.0, -469.0)) dy:-375.0937734433609
flutter: _previousVelocityAt(0) samples(-469.0, -470.0)) dy:-175.71604287471447
flutter: primaryVelocity DragEndDetails(Velocity(0.0, -305.5)).primaryVelocity
flutter: createBallisticSimulation pixels 464.16666666666663 velocity 305.4699824197211
```

**There are 3 options to fix it:**
A. sample uniformly *per unit time* (a larger more risky change, hurts battery life)
B. consider elapsed time since the last sample. If greater than X, assume no more velocity. (easy & just as valid)
C. similar to B, but instead add "ghost samples" of velocity zero, and run calculations as normal (a bit tricker, of dubious benefit imo)

**For Option B I considered two approaches:**
1. _get the current timestamp and compare to event timestamp._  This is tricky because events are documented to use an arbitrary timescale & I wasn't able to find the code that generates the timestamps. This approach could be considered more.
2. _get a new timestamp using Stopwatch and compare now vs when the last sample was added._ This is the solution implemented here.  There is a limitation in that we don't know when addSamples is called relative to the event. But, this estimation is already on a very low latency path & still it gives us a *minimum* time bound which is sufficient for comparison.

**This PR chooses the simplest of the all solutions. Please try it our yourself, it completely solves the problem �** Option _B.1_ would be a nice alternative as well, if we can define and access the same timesource as the pointer tracker in a maintainable simple way.

https://github.com/flutter/flutter/assets/1863934/be50d8e7-d5da-495a-a4af-c71bc541cbe3

Fix and Test Conditional Validator Behavior in FormField (#132714)

In the FormField widget, if a validator is initially set (and validation fails), then subsequently the validator is set to null, the form incorrectly retains its error state. This is not expected behavior as removing the validator should clear any validation errors.

[macOS,iOS] Improve CocoaPods upgrade instructions (#135453)

In our CocoaPods doctor check, if the version of CocoaPods is found to
be too low, rather than emitting a link to the install instructions,
emit a link to the upgrade instructions.

Since this check operates on CocoaPodsStatus, an enum, swtich to using a
case statement and cover all cases.

- [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] 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/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#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/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat

Roll Flutter Engine from 1ae3d20332f0 to 3f606570ac7c (6 revisions) (#135457)

https://github.com/flutter/engine/compare/1ae3d20332f0...3f606570ac7c

2023-09-25 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Switch goma to reclient for Linux clang_tidy targets" (flutter/engine#46267)
2023-09-25 43759233+kenzieschmoll@users.noreply.github.com Add description to assert in `history.dart` (flutter/engine#46072)
2023-09-25 54558023+keyonghan@users.noreply.github.com Switch goma to reclient for Linux clang_tidy targets (flutter/engine#45898)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from e16a9b5b2c48 to a19a325cd670 (6 revisions) (flutter/engine#46261)
2023-09-25 skia-flutter-autoroll@skia.org Roll Dart SDK from 692273b46610 to 216b25f9ea6f (6 revisions) (flutter/engine#46260)
2023-09-25 54558023+keyonghan@users.noreply.github.com Switch goma to reclient for Linux fuchsia/unopt/android_aot (flutter/engine#45899)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 3f606570ac7c to 6bf8067392cf (8 revisions) (#135472)

https://github.com/flutter/engine/compare/3f606570ac7c...6bf8067392cf

2023-09-25 54558023+keyonghan@users.noreply.github.com Restore goma from rbe before 3.16 branching (flutter/engine#46272)
2023-09-25 bkonyi@google.com Add package:tar to DEPS to fix broken 3H configurations (flutter/engine#46273)
2023-09-25 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from SNqQGAfjWL3PbUABh... to we5owZaebdO_3kyjz... (flutter/engine#46270)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from a19a325cd670 to 00e4d00021a7 (6 revisions) (flutter/engine#46269)
2023-09-25 jonahwilliams@google.com [Impeller] fallback to position data if texture coordinates are undefined. (flutter/engine#46264)
2023-09-25 ian@mckellar.org fuchsia: Update FIDL for unknown interactions (flutter/engine#45773)
2023-09-25 jonahwilliams@google.com [Engine] use QoS classes in iOS engine. (flutter/engine#46265)
2023-09-25 jonahwilliams@google.com Revert "Switch goma to reclient for Linux clang_tidy targets (#45898)" (flutter/engine#46266)

Also rolling transitive DEPS:
  fuchsia/sdk/core/mac-amd64 from SNqQGAfjWL3P to we5owZaebdO_

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Add "Frame Request Pending" lag to collected metrics (#135279)

This measures the wall clock time between a new frame being scheduled in dart code to the Vsync callback in the engine

It's an important source of lag which isn't shown in the top-level UI / Build time graphs, and can correlate with "invisible" missed/non-scheduled frames

I had to change a few unrelated timings in the test, it was only passing based on luck of sort order, and broke when I added more entries to the timeline.

Part of #129150

Roll Flutter Engine from 6bf8067392cf to 75950dc280d5 (4 revisions) (#135480)

https://github.com/flutter/engine/compare/6bf8067392cf...75950dc280d5

2023-09-26 skia-flutter-autoroll@skia.org Roll Dart SDK from 216b25f9ea6f to 7c749713c688 (1 revision) (flutter/engine#46284)
2023-09-25 bdero@google.com [Impeller] Support applying color filters on the CPU for the RRect fast path. (flutter/engine#46281)
2023-09-25 skia-flutter-autoroll@skia.org Roll Skia from 00e4d00021a7 to b961fc353715 (6 revisions) (flutter/engine#46280)
2023-09-25 jonahwilliams@google.com [Impeller] Dont blow away coverage hint on advanced blends. (flutter/engine#46219)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 75950dc280d5 to 230dfeed79ed (3 revisions) (#135489)

https://github.com/flutter/engine/compare/75950dc280d5...230dfeed79ed

2023-09-26 skia-flutter-autoroll@skia.org Roll Dart SDK from 7c749713c688 to 7c3588c05f87 (1 revision) (flutter/engine#46288)
2023-09-26 godofredoc@google.com Prepare fuchsia script to coexist with v1 and v2 of fuchsia builders. (flutter/engine#46126)
2023-09-26 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from uY9WEf2tJxa1Hpp4v... to a56c8yPp4DDlj_Qbl... (flutter/engine#46285)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from uY9WEf2tJxa1 to a56c8yPp4DDl

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 230dfeed79ed to 7b989a28514e (2 revisions) (#135494)

https://github.com/flutter/engine/compare/230dfeed79ed...7b989a28514e

2023-09-26 skia-flutter-autoroll@skia.org Roll Skia from b961fc353715 to 8264a73430de (1 revision) (flutter/engine#46289)
2023-09-26 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 4.0.0 to 4.1.0 (flutter/engine#46290)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Packages from e548ae1d2045 to 619af75f7966 (4 revisions) (#135505)

https://github.com/flutter/packages/compare/e548ae1d2045...619af75f7966

2023-09-25 47866232+chunhtai@users.noreply.github.com [go_router] Fixes the Android back button ignores top level route's o� (flutter/packages#4984)
2023-09-25 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 4.0.0 to 4.1.0 (flutter/packages#4988)
2023-09-25 34871572+gmackall@users.noreply.github.com [camera_android] Set buildconfig to true for compatibility with AGP 8.0+ (flutter/packages#4951)
2023-09-25 stuartmorgan@google.com [various] Remove obsolete symlinks (flutter/packages#4993)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Wait for CONFIGURATION_BUILD_DIR to update when debugging with Xcode (#135444)

So there appears to be a race situation between the flutter CLI and Xcode. In the CLI, we update the `CONFIGURATION_BUILD_DIR` in the Xcode build settings and then tell Xcode to install, launch, and debug the app. When Xcode installs the app, it should use the `CONFIGURATION_BUILD_DIR` to find the bundle. However, it appears that sometimes Xcode hasn't processed the change to the build settings before the install happens, which causes it to not be able to find the bundle.

Fixes https://github.com/flutter/flutter/issues/135442

---

Since it's a timing issue, there's not really a consistent way to test it.

I was able to confirm that it works, though, by using the following steps:
1. Create a flutter project
2. Open the project in Xcode
3. `flutter clean`
4. `flutter run --profile -v`

If I saw a print line `stderr: CONFIGURATION_BUILD_DIR: build/Debug-iphoneos`, that means it first found the old and incorrect `CONFIGURATION_BUILD_DIR` before updating to the the new, so I was able to confirm that it would wait until it updated.

[Windows] Add more Arm64 compile and run tests (#135475)

Part of: https://github.com/flutter/flutter/issues/129806

Test runs kicked off using `led`:
* Compile tests
    * � [flutter_gallery_win_desktop__compile](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/a23b73ca25cc56309a725c77be0107aaa1f2d09b1f41f1cc04276b85fac34366/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR2Yv8iS9YbTxMZKS2i5zmAz9E8FCNjW6waLq4e8HwtaFtMlapl66UHf73w)
* Start up tests
    * � [windows_startup_test](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/e615b28993c8b4fcb90e2d52226f9e4d9478850bee67f1f19a88d37e767dcfc2/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR1YtPTpAr6FRq71fy392orp6PO8t9jN8n-mpWvlDF0xRnnOsq3zsAPabWg)
    * � [flutter_gallery_win_desktop__start_up](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/a0148122f81f3eee512ba8e59adcfcff86195eac10dc9a95969b36ae63e0d3e0/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR29O3jW-LyaVAwD54jUmnhfZ2mswqtaZascRoGvteT5gaHihxKI4IastgM)
    * � [flutter_view_win_desktop__start_up](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/6dac552365a2d5502aeda81563f4e62f7bdb73f383d98ed8d8ae52c62e00edea/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR2_irHDuoZ0V-PSjYDW082yx8ZeDVhOIk0yjQBAZNVa5iKVIGAWZs8v4lo)
    * � [platform_view_win_desktop__start_up](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/e6522c77bcbecabdd1f6d38f3b4e1ea41055d8ae7d61f92b741cc953b94d2e15/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR2X7KJDGjQUWJtpq7KY-nUFK-LA6LvmrAinzj0QuF8pEbpwfsAz6Kv3OkM)
    * � [complex_layout_win_desktop__start_up](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/a811334185bc077a5cb69e46fc109ee3e679df6a924ee28d3c73f8b18717fa31/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR0gIiXFMnB_MSaqUxVyTpgpJqc37xSKqOzEsf2oD_oU-AhKPqrGQ-ZD7IY)
* `flutter run` console output tests
    * � [run_debug_test_windows](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/1b275a8b161c965c44c09565a5a9784e322cded973b52dc24645496f43aead5a/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR1IlBr0824cq9UKi46j_11eto6HTEQ9KVXF5Is1ZxcSIO7G6IlN-slsyI8)
    * � [run_release_test_windows](https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/loicsharma_google.com/5b259bb5e2c07666fa12f053c3f5bd782bf074563a9afeeea231fa48bd33daa2/+/build.proto?server=chromium-swarm.appspot.com&fbclid=IwAR3DSHzCGL-KN26E-7hQL58qxV2p0Dtb9hE4AZ0HvEY4hp8mCMzX9jznsFQ)

/cc @pbo-linaro

Roll Flutter Engine from 7b989a28514e to acdb364a42d5 (2 revisions) (#135516)

https://github.com/flutter/engine/compare/7b989a28514e...acdb364a42d5

2023-09-26 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from we5owZaebdO_3kyjz... to OMrTgAfDg9PKXTzq0... (flutter/engine#46294)
2023-09-26 skia-flutter-autoroll@skia.org Roll Skia from 8264a73430de to dd6a4e3655fc (2 revisions) (flutter/engine#46291)

Also rolling transitive DEPS:
  fuchsia/sdk/core/mac-amd64 from we5owZaebdO_ to OMrTgAfDg9PK

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Switch flutter_tools to run frontend server from AOT snapshot (#135255)

Co-authored-by: Christopher Fujino <fujino@google.com>

SelectionArea long press selection overlay behavior should match native (#133967)

During a long press, on native iOS the context menu does not show until the long press has ended. The handles are shown immediately when the long press begins. This is true for static and editable text.

For static text on Android, the context menu appears when the long press is initiated, but the handles do not appear until the long press has ended. For editable text on Android, the context menu does not appear until the long press ended, and the handles also do not appear until the end.

For both platforms in editable/static contexts the context menu does not show while doing a long press drag.

I think the behavior where the context menu is not shown until the long press ends makes the most sense even though Android varies in this depending on the context. The user is not able to react to the context menu until the long press has ended.

Other details:
On a windows touch screen device the context menu does not show up until the long press ends in editable/static text contexts. On a long press hold it selects the word on drag start as well as popping up the selection handles (static text).

Allow multiple ParentDataWidgets to write to ParentData (#133581)

Fixes https://github.com/flutter/flutter/issues/133089

This allows more than one ParentDataWidget to write to the ParentData of a child render object. Previously only one was allowed. There are some rules though:
1. Only one of a given type of `ParentDataWidget` can write to the `ParentData` of a given child.
  a. For example, 2 `Positioned` widgets wrapping a child of a `Stack` would not be allowed, as only one of type `Positioned` can contribute data.

2. The type of `ParentData` **must** be compatible with all of the `ParentDataWidget`s that want to contribute data.
  a. For example, `TwoDimensionalViewportParentData` mixes in the `KeepAliveParentDataMixin`. So the `ParentData` of a given child would be compatible with the `KeepAlive` `ParentDataWidget`, as well as another `ParentDataWidget` that writes `TwoDimensionalViewportParentData` (or a subclass of `TwoDimensionalViewportParentData` - This was the motivation for this change, where a `ParentDataWidget` is being used in `TableView` with the parent data type being a subclass of `TwoDimensionalViewportParentData`.)

[flutter_tools] fix tests with no native assets running native asset build (#135474)

Fixes https://github.com/flutter/flutter/issues/135461

[documentation] remove repeated "For example," in RenderSliverEdgeInsetsPadding documentation (#135297)

There was a repeated "For example," in the documentation of `RenderSliverEdgeInsetsPadding`. This PR fix this.

Revert "Switch flutter_tools to run frontend server from AOT snapshot" (#135537)

Reverts flutter/flutter#135255

This broke Google Testing, and requires an internal patch before relanding.

Roll Flutter Engine from acdb364a42d5 to 0a8ad236e4af (5 revisions) (#135527)

https://github.com/flutter/engine/compare/acdb364a42d5...0a8ad236e4af

2023-09-26 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Use DirectionalLight_Shadow flag for drawing shadows (flutter/engine#46292)
2023-09-26 30870216+gaaclarke@users.noreply.github.com [Impeller] fixes behavior for blurred rounded rect clear (flutter/engine#46167)
2023-09-26 skia-flutter-autoroll@skia.org Roll Skia from dd6a4e3655fc to bc4f22353590 (6 revisions) (flutter/engine#46299)
2023-09-26 30870216+gaaclarke@users.noreply.github.com Clean up the docstring for ColorFilter.matrix (flutter/engine#46298)
2023-09-26 49699333+dependabot[bot]@users.noreply.github.com Bump uuid from 4.0.0 to 4.1.0 in /lib/web_ui (flutter/engine#46293)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Roll Flutter Engine from 0a8ad236e4af to f70f65f7a622 (5 revisions) (#135549)

https://github.com/flutter/engine/compare/0a8ad236e4af...f70f65f7a622

2023-09-27 skia-flutter-autoroll@skia.org Roll Skia from d1215b38667c to 76aecbaea259 (1 revision) (flutter/engine#46309)
2023-09-27 skia-flutter-autoroll@skia.org Roll Skia from bc4f22353590 to d1215b38667c (4 revisions) (flutter/engine#46306)
2023-09-26 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from a56c8yPp4DDlj_Qbl... to Lg6FR6iDnZeV6y-E8... (flutter/engine#46302)
2023-09-26 ychris@google.com [ios] Fix app extension not able to find assets from unloaded bundle (flutter/engine#46283)
2023-09-26 leroux_bruno@yahoo.fr [Android] Fix enableSuggestions set to false not honored (flutter/engine#46037)

Also rolling transitive DEPS:
  fuchsia/sdk/core/linux-amd64 from a56c8yPp4DDl to Lg6FR6iDnZeV

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

✨ `flutter config --list` (#135401)

Resolves #81831.

The PR improves the `config` command in below ways:
- Does not print the settings in usages or other options.
- Adds the `--list` flag to print the full settings list.
- Separates usages for settings and analytics.
- Prints the restart tip when clearing features.

Native assets support for Windows (#134203)

Support for FFI calls with `@Native external` functions through Native assets on Windows. This enables bundling native code without any build-system boilerplate code.

For more info see:

* https://github.com/flutter/flutter/issues/129757

Mainly follows the design of https://github.com/flutter/flutter/pull/134031.

Specifically for Windows in this PR is the logic for finding the compiler `cl.exe` and environment variables that contain the paths to the Windows headers `vcvars.bat` based on `vswhere.exe`.

Marks Linux_pixel_7pro hello_world_impeller to be unflaky (#135564)

<!-- meta-tags: To be used by the automation script only, DO NOT MODIFY.
{
  "name": "Linux_pixel_7pro hello_world_impeller"
}
-->
The test has been passing for [50 consecutive
runs](https://data.corp.google.com/sites/flutter_infra_metrics_datasite/flutter_check_test_flakiness_status_dashboard/?p=BUILDER_NAME:%22Linux_pixel_7pro%20hello_world_impeller%22).
This test can be marked as unflaky.

Roll Packages from 619af75f7966 to 21c2ebb39c07 (6 revisions) (#135602)

https://github.com/flutter/packages/compare/619af75f7966...21c2ebb39c07

2023-09-26 43054281+camsim99@users.noreply.github.com [Android] Add new tasks for subset of tests to run API 33 (flutter/packages#4974)
2023-09-26 stuartmorgan@google.com [video_player] Update iOS prefixes (flutter/packages#4994)
2023-09-26 srawlins@google.com [go_router] Fix @tool directive with missing @end-tool (flutter/packages#4998)
2023-09-26 84124091+opxdelwin@users.noreply.github.com [GoRouter] option to override initial route set by platform  (flutter/packages#4717)
2023-09-26 ditman@gmail.com [video_player] Ensures autoplay is false on the web. (flutter/packages#4961)
2023-09-26 34871572+gmackall@users.noreply.github.com [camera_android] Downgrade to AGP 7.3.0 to fix build_alll_packages test failures (flutter/packages#4997)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Config changes for linux coverage. (#135604)

This build runs for over and hour and it does not need to run on presubmit or release candidate branches.

Fix `SearchAnchor`'s search view isn't updated when the theme changes & widgets inside the search view do not inherit local themes (#132749)

fixes [SearchAnchor (search view) UI glitch on platform brightness changes](https://github.com/flutter/flutter/issues/131835)
fixes [Search view widgets cannot inherit local themes](https://github.com/flutter/flutter/issues/132741)

- This fixes an issue where the `SearchAnchor`'s search view isn't updated when the platform brightness changes.
- Fixes an issue where widgets inside the search view cannot use local themes

`SearchAnchor` currently passed both global and local themes on the search view popup pushing and it uses anchor. button's context to look up the theme.

![search_view drawio (1)](https://github.com/flutter/flutter/assets/48603081/b5317fb1-ee73-461c-a119-f2a1e29f5909)

As a result, when the platform changes and the search view is rebuilt, it cannot use the updated theme.

https://github.com/flutter/flutter/assets/48603081/2f1ebe74-e7d5-4ef3-b97c-a741c3d68964

Similar to `PopupMenuButton`, the theme should be located in the search view so that when the platform brightness is updated and the search view is rebuilt it can use the updated theme.

![search_view drawio](https://github.com/flutter/flutter/assets/48603081/4e48c0cb-a558-4de6-9865-5f51981a343f)

https://github.com/flutter/flutter/assets/48603081/d8d85982-c661-4cac-83e8-0488b1d93daf

However, the search view's context cannot access local themes so I added support for `InheritedTheme`, which fixes the local. theme issue for both the search view and widgets inside the search view.

![Screenshot 2023-08-17 at 15 54 02](https://github.com/flutter/flutter/assets/48603081/dec18ba3-9f01-4706-987a-eb2fd4afb180)

![Screenshot 2023-08-17 at 15 55 15](https://github.com/flutter/flutter/assets/48603081/13f2797a-7f70-43b5-bc56-7971cf76a61d)

made top level if checks gaurd clauses (#135070)

This is a tiny tweak to replace some top level if clauses with guard clauses in `FutureBuilder`. I find the resultant code much more readable, but this is a matter of taste and I didn't see any info one way or another on it in the style guide so let me know if this is not to your all's preference.

Support ensureVisible/showOnScreen/showInViewport for 2D Scrolling (#135182)

fix last test

get compiling

fix

implement features
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 15, 2023
HugoOlthof pushed a commit to moneybird/packages that referenced this pull request Dec 13, 2023
…r#5036)

Roll Flutter from ff4a0f676f41 to 57b5c3cda000 (47 revisions)

flutter/flutter@ff4a0f6...57b5c3c

2023-09-29 engine-flutter-autoroll@skia.org Roll Packages from c070b0a to d0e9a0e (5 revisions) (flutter/flutter#135753)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from db4d3b5b3f59 to c52251a8b2d0 (1 revision) (flutter/flutter#135748)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8b4e633c65eb to db4d3b5b3f59 (2 revisions) (flutter/flutter#135745)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 09130bf5be97 to 8b4e633c65eb (1 revision) (flutter/flutter#135744)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from ccb30585d3f3 to 09130bf5be97 (1 revision) (flutter/flutter#135741)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2052515c44f3 to ccb30585d3f3 (1 revision) (flutter/flutter#135737)
2023-09-29 godofredoc@google.com Update localizations. (flutter/flutter#135691)
2023-09-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 485543c6765a to 2052515c44f3 (4 revisions) (flutter/flutter#135732)
2023-09-29 54558023+keyonghan@users.noreply.github.com Add arch property for windows_arm64 platform (flutter/flutter#135725)
2023-09-29 jonahwilliams@google.com [flutter_tools] remove VmService screenshot for native devices. (flutter/flutter#135462)
2023-09-29 polinach@google.com Pin leak_tracker before publishing breaking change. (flutter/flutter#135720)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from cc7c3c1f0f41 to 485543c6765a (8 revisions) (flutter/flutter#135717)
2023-09-28 katelovett@google.com Remove assertions on getOffsetToReveal (flutter/flutter#135634)
2023-09-28 fluttergithubbot@gmail.com Marks Linux_android flutter_gallery__start_up_delayed to be unflaky (flutter/flutter#135565)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from dbb60932a6ab to cc7c3c1f0f41 (2 revisions) (flutter/flutter#135701)
2023-09-28 yjbanov@google.com [tool] fallback to sigkill when closing Chromium (flutter/flutter#135521)
2023-09-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#135455)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9789dbc2ec3f to dbb60932a6ab (2 revisions) (flutter/flutter#135694)
2023-09-28 leroux_bruno@yahoo.fr Fix TabBarView.viewportFraction change is ignored (flutter/flutter#135590)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d9eaebd05851 to 9789dbc2ec3f (2 revisions) (flutter/flutter#135688)
2023-09-28 matheus@btor.com.br Added option to disable [NavigationDestination]s ([NavigationBar] destination widget) (flutter/flutter#132361)
2023-09-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Marks Windows module_custom_host_app_name_test to be unflaky" (flutter/flutter#135692)
2023-09-28 github@alexv525.com � Add more fields to `RefreshProgressIndicator` (flutter/flutter#135207)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 82b69dadc07a to d9eaebd05851 (1 revision) (flutter/flutter#135679)
2023-09-28 andrewrkolos@gmail.com Add API to read flavor from framework at run time (flutter/flutter#134179)
2023-09-28 fluttergithubbot@gmail.com Marks Windows module_custom_host_app_name_test to be unflaky (flutter/flutter#135567)
2023-09-28 tauu@h2overclock.de [web] fix: do not call onSubmitted of TextField when switching browser tabs on mobile web (flutter/flutter#134870)
2023-09-28 engine-flutter-autoroll@skia.org Roll Packages from 21c2ebb to c070b0a (3 revisions) (flutter/flutter#135676)
2023-09-28 tessertaha@gmail.com Fix `RangeSlider` throws an exception in a `ListView` (flutter/flutter#135667)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d09c2dbe2292 to 82b69dadc07a (2 revisions) (flutter/flutter#135675)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 495955a3b5de to d09c2dbe2292 (1 revision) (flutter/flutter#135669)
2023-09-28 zanderso@users.noreply.github.com Revert "Upload generated frame-request-pending stats" (flutter/flutter#135672)
2023-09-28 smartercallum@gmail.com Upload generated frame-request-pending stats (flutter/flutter#135645)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 937bf0432214 to 495955a3b5de (1 revision) (flutter/flutter#135665)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d2540d87fd96 to 937bf0432214 (1 revision) (flutter/flutter#135660)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c47faed53afe to d2540d87fd96 (2 revisions) (flutter/flutter#135652)
2023-09-28 tessertaha@gmail.com Update `TextField.style` documentation for Material 3 (flutter/flutter#135556)
2023-09-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 44aef2e61718 to c47faed53afe (1 revision) (flutter/flutter#135647)
2023-09-28 engine-flutter-autoroll@skia.org Manual roll Flutter Engine from be32dcc9117a to 44aef2e61718 (4 revisions) (flutter/flutter#135646)
2023-09-28 engine-flutter-autoroll@skia.org Manual roll Flutter Engine from f70f65f7a622 to be32dcc9117a (31 revisions) (flutter/flutter#135637)
2023-09-28 rmolivares@renzo-olivares.dev Implement SelectionArea single click/tap gestures (flutter/flutter#132682)
2023-09-27 katelovett@google.com Support ensureVisible/showOnScreen/showInViewport for 2D Scrolling (flutter/flutter#135182)
2023-09-27 caseycrogers@berkeley.edu made top level if checks gaurd clauses (flutter/flutter#135070)
2023-09-27 tessertaha@gmail.com Fix `SearchAnchor`'s search view isn't updated when the theme changes & widgets inside the search view do not inherit local themes (flutter/flutter#132749)
2023-09-27 godofredoc@google.com Config changes for linux coverage. (flutter/flutter#135604)
2023-09-27 engine-flutter-autoroll@skia.org Roll Packages from 619af75 to 21c2ebb (6 revisions) (flutter/flutter#135602)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c: new feature Nothing broken; request for a new capability f: scrolling Viewports, list views, slivers, etc. framework flutter/packages/flutter repository. See also f: labels. p: two_dimensional_scrollables Issues pertaining to the two_dimensional_scrollables package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2D Follow up: ensureVisible
3 participants