Also, clean up the class hierarchy for AnimationController now that
we've renamed progress to value. That means everything in the hierarchy
now has a value, include Watchable. This patch renames Watchable to
Animated<T>, which lets us use that type almost everywhere.
I've added some ducktape to modal bottom sheets to avoid having to
refactor all of Navigator to use AnimationController. I'll remove the
ducktape in the next patch.
Revised Material Gallery demo
The demo's home page is now a grid divided into the same six sections that appear in the Material Design spec itself. Tapping on a section leads to a list of demos. Currently only the "Components" section has any demos.
All of the demos are now self-contained apps with their own Scaffold and etc.
This patch removes state from the animation system, which was causing problems
as we were scaling the use of animated values.
Now the "tween" objects are stateless and can watch animations, which creates a
new object that holds both the tween and the animation instead of mutating the
tween every tick of the animation.
This patch ports one client as a proof-of-concept.
Fixes#215
RenderBlock wasn't constraining the results.
RenderPadding wasn't constraining the results (which matters
especially when the constraints can't fit the padding in the first
place).
RenderViewport wasn't constraining the results.
Add a test for the block case.
To catch this kind of thing in the future, add some asserts to
debugDoesMeetConstraints() that all four intrinsic functions return
values that are within the constraints.
RenderBlockViewport doesn't support returning intrinsics, so turn off
the "no intrinsic support" asserts (and return zero) when we're doing
this new assert.
This new assert screwed up the custom layout classes' tests, so adjust
those tests to ignore the callbacks invoked from these asserts.
Add to the _debugReportException() method a short summary of the
descendants of this node. It's important to have this information when
debugging errors like these intrinsic constraints contract violations
because often nodes just pass the values through to their child so you
have to go several steps down to find the actual problem.
Fixes https://github.com/flutter/flutter/issues/1210
As part of this:
- A lot of classes got new lerp functions, including e.g. TextStyle.
- Theme's constructor story got overhauled. You can now configure
everything if you really want to, and we're better about defaults.
- Material no longer automatically animates its background color.
(It still does for its shadow.)
- Tabs try to get the indicator color from the theme.
- The fields in ThemeData got reordered for sanity.
- Theme.== and Theme.hashCode got fixed.
- Typography got a bit of a spring cleaning.
Fixes#613.