This allows us to rationalize the nullability of some of our APIs.
Prior to this we'd end up in a situation where Container assumed that
getClipPath would be non-null but Decoration was ok with return null.
Flutter's `moreOrLessEquals` has a few advantages over `closeTo` from
the `matcher` package:
* It emits the epsilon value in the test result on failure.
* It uses a named parameter for epsilon, which improves readability
at the call site.
* It has a reasonable default for epsilon in cases where something
more specific isn't required.
Using it also has the nice property that it aids in its own discovery
when when people go looking for such functionality in new tests.
This change also includes a couple unrelated whitespace formatting cleanups.
* Redesigns the interface between MouseTracker and RendererBinding&RenderView.
* Simplifies the structure of RenderMouseRegion.
* Extracts the common utility code between mouse_tracker_test and mouse_tracker_cursor_test.
* (insert|move|remove)ChildRenderObject Deprecation: Step 1
This deprecates the following methods:
* RenderObjectElement.insertChildRenderObject
* RenderObjectElement.moveChildRenderObject
* RenderObjectElement.removeChildRenderObject
...and replaces them with the following methods:
* RenderObjectElement.insertRenderObjectChild
* RenderObjectElement.moveRenderObjectChild
* RenderObjectElement.removeRenderObjectChild
The reason for the deprecation is to provide the `oldSlot` argument to
the `moveRenderObjectChild` method (such an argument was missing from
the now-deprecated `moveChildRenderObject` method) and the `slot`
argument to the `removeRenderObjectChild` method (such an argument was
missing from the now-deprecated `removeChildRenderObject` method). While
no argument was added to `insertRenderObjectChild`, the name change (and
corresponding deprecation) was made to maintain naming parity with the
other two methods.
This initial step does not update or remove any of the `slotToChild`
patterns that exist in the framework. This work is being separated
into two commits in case something needs to be reverted to minimize
the scope of each commit.
See https://github.com/flutter/flutter/issues/63269 for more info
It now uses the scroll metrics as they stood at the end of the last frame.
It previously used a weird combination of the old extents and the newish position, which led to some weird effects when the position had been changed in expectation of a viewport or content dimension change.