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.
Turns out Android crashes if the colour is not opaque, so we enforce
that at the Dart level.
Also, since label and colour are both actually optional, make them
named arguments.
This uses the fancy new x-repository support:
https://github.com/luci/recipes-py/blob/master/doc/cross_repo.md
I'm not at all certain that we're going to use Chromium's
Infra for flutter, but I'm exploring and since this works
I figure I should check it in.
@abarth