I screwed up my last change, turns out the package command
is sensitive about having all of its flags before args.
Also made it possible to control the resources directory
from the command line per the review comments in the previous change.
@jason-simmons
Correct the TabBarView swipe selection change animation
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.
I also made it so that `flutter apk -v` showed what
commands it was running by moving off of a custom _run
function onto the base/process.dart runChecked shared
by other commands.
@jason-simmons
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. :-)
Custom layouts use shouldRelayout() delegate methods instead of tokens
CustomMultiChildLayout and CustomOneChildLayout now use their delegate's shouldRelayout() method instead of a "token" to decide if layout is needed.
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
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