updateLayerProperties static method
- RenderObject child
Update the composited layer of child
without repainting its children.
The render object must be attached to a PipelineOwner, must have a composited layer, and must be in need of a composited layer update but not in need of painting. The render object's layer is re-used, and none of its children are repaint or their layers updated.
See also:
- RenderObject.isRepaintBoundary, which determines if a RenderObject has a composited layer.
Implementation
static void updateLayerProperties(RenderObject child) {
assert(child.isRepaintBoundary && child._wasRepaintBoundary);
assert(!child._needsPaint);
assert(child._layerHandle.layer != null);
final OffsetLayer childLayer = child._layerHandle.layer! as OffsetLayer;
Offset? debugOldOffset;
assert(() {
debugOldOffset = childLayer.offset;
return true;
}());
final OffsetLayer updatedLayer = child.updateCompositedLayer(oldLayer: childLayer);
assert(identical(updatedLayer, childLayer),
'$child created a new layer instance $updatedLayer instead of reusing the '
'existing layer $childLayer. See the documentation of RenderObject.updateCompositedLayer '
'for more information on how to correctly implement this method.'
);
assert(debugOldOffset == updatedLayer.offset);
child._needsCompositedLayerUpdate = false;
}