This patch restructures how we handle drawer. The drawer is now a child of the
Scaffold, which wraps the Drawer in a DrawerController. The DrawerController
manages the interaction with the navigator as well as the edge swiping. The
DrawerController's state machine is driven almost entirely off its Performance,
which it now owns completely.
Fixes#90Fixes#187Fixes#192Fixes#194Fixes#604
The names are probably less familiar, but more consistent:
- FrameCallback: a callback that is relative to the frame and wants the
frame offset (a duration) as argument.
- addXFrameCallback: adds the given callback to the internal lists/maps.
- scheduleXFrameCallback (currently only X = ""): add the callback, but
also trigger a new frame.
- handleX: the method that is invoked when the event-loop or the frame
calls into the scheduler.
- ensureXYZ: ensure that the callback happens.
Unfortunately there is the ambiguity between a "callback": it can be a
closure, or the action of doing a callback, so we end up with:
ensureBeginFrameCallback, and ensureEventLoopCallback, where
"callback" means the action of being called back.
This patch integrates Mimicable with Overlay such that you can tell a Mimicable
to lift up into the overlay and animate towards another widget identified by a
global key.
Heroes with the same tag have to have keys that are unique across the
entire subtree. Since we can now show both stock lists, this means we
have to include the tab in the heroes' keys.
Fixes#668.
Some paint bounds are in fact empty, e.g. at the start of a growing
animation if there's also a fade, the initial 0x0 box will also be
opacity:0, and might get a dedicated layer and PaintingContext.
The right fix here is to use a radial reaction, but for now we can just make
the gesture detector including the padding acround the icon in its hit test
region.
Fixes#575
This feature can be used to implement password fields, where the user doesn't
want the text displayed on screen. Currently all the characters are hidden.
Eventualy we'll want to show the most recent character for some timeout.
Fixes#636
The TabBar's selection is now represented by a TabBarSelection object which encapsulates both the previous and currently selected indices and the Performance used to animate the selection indicator.
Added a TabBarView class which displays a tab's contents. It uses a shared TabBarSelection to stay in sync with a TabBar. The TabBarView scrolls in sync with the TabBar when the selection changes. Eventually it will allow one to fling the selection forward or backwards.
Added a tabBar property to ToolBar. Typically the corresponding TabBarView will be the body of the toolbar's Scaffold.
Removed TabNavigatorView and TabNavigator.
Added a widget gallery tabs demo page. Removed the old tabs demo.
1) Moved basic utility code into base/ directory to make it clear which code
doesn't depend on Flutter-specific knowldge.
2) Move the CommandRunner subclasses into a runner/ directory because these
aren't commands themselves.
Add an --upgrade flag to the dev/update_packages.dart flag which runs
'pub upgrade' instead of 'pub get'. Tell people to use this when using
'flutter analyze' since 'pub get' doesn't have the same guarantee of
getting everything in sync.