paintChild method

  1. @override
void paintChild (
  1. int i,
  2. {Matrix4 transform,
  3. double opacity: 1.0}

Paint the ith child using the given transform.

The child will be painted in a coordinate system that concatenates the container's coordinate system with the given transform. The origin of the parent's coordinate system is the upper left corner of the parent, with x increasing rightward and y increasing downward.

The container will clip the children to its bounds.


void paintChild(int i, { Matrix4 transform, double opacity = 1.0 }) {
  transform ??= Matrix4.identity();
  final RenderBox child = _randomAccessChildren[i];
  final FlowParentData childParentData = child.parentData as FlowParentData;
  assert(() {
    if (childParentData._transform != null) {
      throw FlutterError(
        'Cannot call paintChild twice for the same child.\n'
        'The flow delegate of type ${_delegate.runtimeType} attempted to '
        'paint child $i multiple times, which is not permitted.'
    return true;
  childParentData._transform = transform;

  // We return after assigning _transform so that the transparent child can
  // still be hit tested at the correct location.
  if (opacity == 0.0)

  void painter(PaintingContext context, Offset offset) {
    context.paintChild(child, offset);
  if (opacity == 1.0) {
    _paintingContext.pushTransform(needsCompositing, _paintingOffset, transform, painter);
  } else {
    _paintingContext.pushOpacity(_paintingOffset, ui.Color.getAlphaFromOpacity(opacity), (PaintingContext context, Offset offset) {
      context.pushTransform(needsCompositing, offset, transform, painter);