This removes direct file access from within flutter_tools
in favor of using `package:file` via a `FileSystem` that's
accessed via the `ApplicationContext`.
This lays the groundwork for us to be able to easily swap
out the underlying file system when running Flutter tools,
which will be used to provide a record/replay file system,
analogous to what we have for process invocations.
LayoutCallback passes constraints to the callback, but the constraints
object has a different type for different subclasses. This lets you
call invokeLayoutCallback() with a specific type to verify that
everything is working as expected.
Other changes:
Slightly improve the error reporting in RenderObject.
Allow toStringShallow on RenderObject to have its separator configured.
Also, make hasOneLineDescription more discerning.
Also, add a test for hasOneLineDescription.
Also, add a test for GravitySimulation, to test the toString.
- more dartdocs for the drag typedefs
- more toStrings to aid debugging
- require the position for DragUpdateDetails since we were omitting it
in some places
- add the primaryVelocity to DragEndDetails so that consumers don't
have to themselves track the axis in question
- fix the velocity tracker so that it doesn't walk the null data.
Previously, near time t=0 (which pretty much only matters in tests,
but it does matter there) we would walk the velocity data and then
also walk missing data, treating it as Point.zero with t=0.
- simplify some of the velocity tracker; e.g. instead of trying (and
failing?) to clear the velocity tracker when the pointer stalls,
just drop the data before a stall during the velocity estimation
(where we redundantly had another bigger horizon anyway).
Previously, SizeChangedLayoutNotifier fired a notification even for
the first layout.
Also, previously its test relied on that, and didn't actually change
size at all. This fixes the test as well.
Also, rename SizeChangedLayoutNotificaion to SizeChangedLayoutNotification.
```dart
expect(x, moreOrLessEquals(0.0));
```
...for those cases where `x` might be 1e-11 or whatever.
Also, be more resilient when dumping the tree from inside the test framework.
Also, add an assert that helped me debug something the other day.
This lets you use `Listenable.merge` without having to sanitize your
incoming list of change notifiers, in case your semantics are that
they are optional.
This patch changes the default appearance of Slider to not have the
thumb be an open circle at its minimum position. The `thumbOpenAtMin`
property can enable drawing an open thumb at the min position, which was
the previous behavior.
Fixes#6941
We were trying to update the tooltip overlay entry, but that cannot work
because the overlay entry might have already built. Instead, we keep the
old value.
Fixes#7151
Callers can manually validate by calling validate(), or tell the Form to
validate on every change by setting the `autovalidate` parameter.
Fixes https://github.com/flutter/flutter/issues/7219