Use the same technique for updating compositing bits as layout and
painting. This avoids walking the entire rendering tree when all you
need to update is a small subtree.
The TabBarSelection change animation needs to start where the fling's drag gesture ended rather than from zero. The intial vlaue of progress for the TabBarSelection's performance is now converted from the range used during an interactive drag, to the range used when animating from the previously selected tab to the new one.
TabBarSelection now requires a maxIndex parameter.
Scaffold calls this to see if it should show a back arrow when there's
no drawer. With this change, everything continues to work.
Fixes styled_text and probably others.
Previously we didn't distinguish between canceling the menu (which
popped the route with no return value, i.e. null) and explicitly
selecting an item whose value is null (pop with value null). Both fired
onChange(null).
Now we box the return value so we can distinguish the two cases.
I would have preferred to just disallow "null" as a value but it turns
out people like being able to use "null" as a value for much the same
reason we do, and it seems best for us to pay the complexity cost of
boxing than having everyone else do it. :-)
MultiChildLayoutDelegate and OnChildLayoutDelegate are now expected to be stateless, i.e. they'll typically be built each time their custom layout widget is built. If the identical layout delegate is provided to a new custom layout, layout will not happen.
Revised the bottom sheet implementation per the new custom layout classes. Removed a SizeObserver.
Fixes#899
Swiping left or right in a TabBarView now changes the selected tab in the way it's supposed to.
Currently swipe gestures that start while the selection change is underway are ignored. Will fix that in a separate change.
Previously, applyPaintTransform() had to know how it was positioned in
its parent, even though that's really the parent's responsibility.
Now, applyPaintTransform() is given a child and applies the transform
that it would give the child during paint.
This makes it possible for applyPaintTransform() to work across
coordinate system boundaries (e.g. box to sector, or view to box --
previously, view to box only worked because we explicitly skipped that
step -- since view doesn't actually apply a transform, it doesn't
really matter).
- Adds dartdoc for all the `of` functions.
- Renames Image to RawImage. This widget is rarely used and shouldn't take up
such a nice global name.
Fixes#361