layoutChildren method

void layoutChildren(
  1. BoxConstraints constraints, {
  2. List<int>? hideWidgets,
  3. TextPainter? textPainter,
})

Implementation

void layoutChildren(
  BoxConstraints constraints, {
  List<int>? hideWidgets,
  TextPainter? textPainter,
}) {
  if (childCount == 0) {
    return;
  }
  RenderBox? child = firstChild;
  _placeholderDimensions = List<PlaceholderDimensions>.filled(
      textChildCount, PlaceholderDimensions.empty,
      growable: false);

  int childIndex = 0;
  while (child != null && childIndex < textChildCount) {
    // Only constrain the width to the maximum width of the paragraph.
    // Leave height unconstrained, which will overflow if expanded past.
    child.layout(
      BoxConstraints(
        maxWidth: hideWidgets != null && hideWidgets.contains(childIndex)
            ? 0
            : constraints.maxWidth,
      ),
      parentUsesSize: true,
    );
    double? baselineOffset;
    switch (_placeholderSpans[childIndex].alignment) {
      case ui.PlaceholderAlignment.baseline:
        {
          baselineOffset = child
              .getDistanceToBaseline(_placeholderSpans[childIndex].baseline!);
          break;
        }
      default:
        {
          baselineOffset = null;
          break;
        }
    }
    _placeholderDimensions![childIndex] = PlaceholderDimensions(
      size: child.size,
      alignment: _placeholderSpans[childIndex].alignment,
      baseline: _placeholderSpans[childIndex].baseline,
      baselineOffset: baselineOffset,
    );
    child = childAfter(child);
    childIndex += 1;
  }
  (textPainter ?? this.textPainter)
      .setPlaceholderDimensions(_placeholderDimensions);
}