pushLayer method
Appends the given layer to the recording, and calls the painter
callback
with that layer, providing the childPaintBounds
as the estimated paint
bounds of the child. The childPaintBounds
can be used for debugging but
have no effect on painting.
The given layer must be an unattached orphan. (Providing a newly created object, rather than reusing an existing layer, satisfies that requirement.)
The offset
is the offset to pass to the painter
.
If the childPaintBounds
are not specified then the current layer's paint
bounds are used. This is appropriate if the child layer does not apply any
transformation or clipping to its contents. The childPaintBounds
, if
specified, must be in the coordinate system of the new layer, and should
not go outside the current layer's paint bounds.
See also:
- addLayer, for pushing a leaf layer whose canvas is not used.
Implementation
void pushLayer(ContainerLayer childLayer, PaintingContextCallback painter, Offset offset, { Rect childPaintBounds }) {
assert(!childLayer.attached);
assert(childLayer.parent == null);
assert(painter != null);
stopRecordingIfNeeded();
appendLayer(childLayer);
final PaintingContext childContext = createChildContext(childLayer, childPaintBounds ?? estimatedBounds);
painter(childContext, offset);
childContext.stopRecordingIfNeeded();
}