We don't know how to accuately compute paint bounds in the render tree.
Instead, we can rely on the compositor to compute the paint bounds for
us if we use OpacityLayer to do our opacity blends.
Fixes the shadow when closing the menu in the stocks app.
Also, introduce alwaysNeedsCompositing to force the "needs compositing"
bit to true without necessarily introducing a ContainerLayer into the
layer tree. A future patch will make use of alwaysNeedsCompositing to
optimize opacity layers.
The pointer router was using an iteration pattern that always delivers
handleEvent calls even if you remove a route during the iteration.
That's awkward to program against and causes trouble for the double-tap
gesture.
This patch switches PointerRouter to using a re-entrant iteration
pattern that supports removing routes (but not adding routes) during the
iteration.
- Add an option to enable debugPaintSizeEnabled.
- Add an option to enable the StatisticsOverlay.
- Add support for the StatisticsOverlay in MaterialApp.
- Change the layout behaviour of RenderStatisticsBox:
- Give it a zero intrinsic width.
- Give it an accurate intrinsic height that depends on the flags
set. (Also, move the enum to the rendering/ layer from the
widgets/ layer to enable this.)
- Make the box automatically size itself full-width and the correct
height, so that you can actually embed it (though most of the
time you'd just put it in a Stack so this doesn't matter as
much, really).
- Some style nit fixes in statistics_box.dart.
When the TabView widget's children change, we don't change the children
we give to the PageViewport because we fail to update _items. This patch
watches didChangeConfig and updates _items appropriately.
Fixes#1134Fixes#1168
This makes it more consistent with tightFor(), and also makes it
easier to tighten both directions at once when you're not sure you
will always do so (e.g. if you have a height and width that might be
null, and want to tighten whichever ones aren't null).
- padding is shown in blue with a darker blue around the child
- spacing (empty size boxes or padding) is shown in gray
- alignment from a RenderPositionedBox is shown with yellow arrows
When I tightened up the layout constraints for the Drawer in the
Scaffold, I ended up making the edge swipe detector cover the entire
screen. This patch fixes that issue by putting the gesture detector for
the edge swipe just around the container with the proper width. We now
use a global key to maintain the state across hierarchy changes.
Change how GridPaper works so that it's easier to plug in anywhere.
It now takes a child that it will paint the grid over.
It defaults to semi-transparent grid-paper-blue.
The line spacing is also more configurable now.
Previously, we triggered a layout (and hence a repaint) when sliding the
draw because we gave the draw loose constraints. The drawer uses an
Align to move itself to the proper side of the screen, so it can have
tight constraints, which makes it a layout boundary.
Also, don't trigger a layout just because the Scaffold rebuilds. There
isn't any state in the scaffold custom layout, so it doesn't need to
repaint just because we created a new instance of the delegate.
Finally, add the debugging infrastructure I used to find these issues.