The asserting will continue until morale improves!
* Convert all assert(*.isNormalized) checks to use the new
debugAssertIsNormalized technology.
* Convert CustomMultiChildLayout to use the new RenderingError
technology to greatly improve the detail in errors you get when
writing CustomMultiChildLayout delegates.
* Add BoxConstraints.copyWith().
* Indent the descendants in the rendering exception data dump so that
when you have multiple children it's clearer what's going on.
Add BoxConstraints.isNormalized feature.
Use this feature in asserts in all the intrinsic dimension methods, in
various relevant BoxConstraints methods, and in layout().
Wrap the _DebugSize logic in BoxConstraints.constrain() in an assert
block to avoid a branch in release mode.
Remove the logic in BoxConstraints.isSatisfiedBy() that dealt with
non-normalized values.
Add BoxConstraints.normalize().
Make RenderCustomOneChildLayoutBox.performLayout() only set
parentUsesSize on the child if the constraints aren't tight.
Previously, we would assert with FlexJustifyContent.collapse if we ran out of
space. Now we do the same thing we do for the other types of justification,
which is to let the children's layout overflow.
This pattern breaks when using compositing because we need to lift those
operations into the compositing tree. This patch removes all the ones I could
find and adds an assert to help prevent more from getting introduced.
Fixes#191
Now a RenderBox is considered hit if one of its children are hit or it itself
decides that it's hit. In particular, empty space inside a flex won't be hit
because none of the children are located there and a RenderFlex doesn't
consider itself hittable.
Fixes#53Fixes#1221
- change how we expose settings at the RenderObject layer so that it's
easier to maintain.
- expose the Widget owner chain in the RenderObject layer debug output
- add debug info to RenderOpacity, RenderIgnorePointer, RenderListener
- make the output for text nodes prettier
Add type annotations in many places.
Fix some identifiers to have more lint-satisfying names.
Make all operator==s consistent in style.
Reorder some functions for consistency.
Make ParentData no longer dynamic, and fix all the code around that.
Now that you import a top-level file for each layer of the Flutter
framework, within the framework we can use relative paths without being
worried about the copy/pasta problem we used to have.
We need a short name more often than a tree dump, so toString() should
be the short name.
Make debugDumpRenderTree() a global like debugDumpApp(), for
consistency. It's hard to remember the
SkyBinding.instance.dumpRenderTree() incantation.
Fixes#1179.
Code outside of package:sky should import this code using
package:sky/rendering.dart
package:sky/widgets.dart
Moving this code into the "src" directory is a convention that signifies that
and it cleans up the generated dartdoc because the libraries in the src
directory aren't included in the generated documentation. Instead, the classes
are documented in the widgets.dart and rendering.dart libraries.