- force the time dilation to 1.0 for the Widget tests, so that a local
change doesn't break all the tests during development.
- add missing license block to all the files.
- set ui.window.onBeginFrame to null when you use WidgetTester, so that
the engine doesn't trigger any confusing frames after our fake frames.
- Change RouteArguments to pass the route's BuildContext rather than
the Navigator. This caused the bulk of the examples/ and .../test/
changes (those are mostly mechanical changes). It also meant I could
simplify Navigator.of().
- Make initState() actually get called when the State's Element is in
the tree, so you can use Foo.of() functions there. Added a test for
this also.
- Provide a RouteWidget so that routes have a position in the Widget
tree. The bulk of the route logic is still in a longer-lived Route
object for now.
- Make Route.setState() only rebuild the actual route, not the whole
navigator.
- Provided a Route.of().
- Provided a Route.writeState / Route.readState API that tries to
identify the clients by their runtimeType, their key, and their
ancestors keys, up to the nearest ancestor with a GlobalKey.
- Made scrollables hook into this API to track state. Added a test to
make sure this works.
- Fix the debug output of GestureDetector and the hashCode of
MixedViewport.
- Fixed ScrollableWidgetListState<T> to handle infinite lists.
(These are changes cherry-picked from in-flight branches since they are
more independent and could be helpful even without those changes.)
- Change RouteBuilder's signature to take a single argument in which the
other fields are placed, so that we can keep iterating on those
arguments without having to break compatibility each time. Also, this
makes defining route builders much simpler (only one argument to
ignore rather than a variable number).
- Expose the next performance to RouteBuilders, since sometimes the
route itself might not be where it's used.
- Allow BuildContext to be used to walk children, just like it can for
ancestors
- Allow BuildContext to be used to get the Widget of the current
BuildContext
- Allow StatefulComponentElement to be referenced with a type
specialisation so that you don't have to cast when you know what the
type you're dealing with actually is.
Introduce a Draggable class that wraps all the logic of dragging
something and dropping it on a DragTarget.
Update examples/widgets/drag_and_drop.dart accordingly.
Make the performance/transition part of routes optional.