Inside runApp, we were building the render tree for the app, but we weren't
calling layout, which meant we were running a hit test on a dirty tree. Now
hitTest specifically asserts that the tree is clean and we synchronously call
layout for your app during runApp.
Fixes#1960
We need to use the performance for the "from" route when going backwards. Also,
fix a bug in the HeroParty where it would call the quest finished callback
multiple times.
Fixes#1958
It's common to want a scrolling viewport but with padding around the
contents. Teaching Block about this makes the places that do this
substantially simpler and further buries ScrollableViewport and
BlockBody (they're now only used in scrollable.dart).
Draggable is now itself a gesture arena member. This means it won't
conflict with other gesture recognisers in the same path.
This also allows variants of Draggable that are triggered by other
gestures.
Also, some cleanup of DoubleTapGestureRecognizer, GestureDetector, and
PrimaryPointerGestureRecognizer.
Also, make MultiTapGestureRecognizer support a timeout for longpress.
Also, make Draggable data be typed.
Also, hide warnings about constructor warnings for now. Analyzer doesn't
support them yet. (Have to do this on a per-line basis)
Directions for future research:
- animating the avatar (enter/exit transitions)
- interaction with the navigator (canceling a drag on page navigation, etc)
- double-tap draggable
- runApp(new MaterialApp()) was crashing long after the constructor. Now
it asserts in a more useful location.
- remove the default name for NamedRouteSettings. It was unused anyway.
Now a RenderBox is considered hit if one of its children are hit or it itself
decides that it's hit. In particular, empty space inside a flex won't be hit
because none of the children are located there and a RenderFlex doesn't
consider itself hittable.
Fixes#53Fixes#1221
One Scaffold layout to rule them all
Expanded the existing CustomMultiChildLayout to handle all of the Scaffold's children.
This change also eliminates the FAB input dead-zone.
Make all the *GestureRecognizer classes inherit from a class called
GestureRecognizer. Give the old GestureRecognizer a name that is more
precise about its purpose. Remove the members of GestureArenaMember that
aren't used by GestureArenas.
- change how we expose settings at the RenderObject layer so that it's
easier to maintain.
- expose the Widget owner chain in the RenderObject layer debug output
- add debug info to RenderOpacity, RenderIgnorePointer, RenderListener
- make the output for text nodes prettier
Previously, we'd leave the old values in the parent data if the types matches,
but not all render objects would reset these values during layout. For example,
RenderProxyBox doesn't set the position field because it doesn't read the
position field. However, leaving the old data there violates the invariants of
the box protocol and can cause trouble (e.g., localToGlobal giving the wrong
result).
Fixes#1939
Document the Gesture Detector constants.
Remove kEdgeSlop since it's obsolete on Android.
Add a test that verifies that when the first tap is canceled, the second
tap can become the first tap of a subsequent two-tap sequence.
Add support for "extended height" toolbars - ToolBar bottom
Added a Widget-valued bottom ToolBar property. If set the bottom widget appears below the normal toolbar.
Removed the kToolBarHeight hardwiring from Scaffold.
Updated the "swipe away" demo to use an extended height toolbar.
Previously, we passed widgets up the hierarchy to display them in the overlay,
but that breaks the change propagation logic because those widgets won't get
rebuilt. Now we pass WidgetBuilders instead, which can be rebuilt when the
overlay rebuilds.
Fixes#1913