performLayout method

  1. @override
Size performLayout(
  1. BoxConstraints constraints
)
override

Hook for subclasses to perform layout within the given constraints.

Implementation

@override
Size performLayout(BoxConstraints constraints) {
  final richTextWidget = widget as RichText;
  final width = constraints.maxWidth == BoxConstraints.infinity
      ? 999999
      : constraints.maxWidth;

  final allStyledChars = <StyledChar>[];
  richTextWidget.text.buildStyledChars(allStyledChars, Style.empty);

  _cachedLines = richTextWidget.wrap
      ? richTextWidget._wrapStyledChars(allStyledChars, width)
      : richTextWidget._clipStyledChars(allStyledChars, width);

  final limit = richTextWidget.maxLines != null
      ? min(richTextWidget.maxLines!, _cachedLines.length)
      : _cachedLines.length;

  var measuredWidth = 0;
  for (var i = 0; i < limit; i++) {
    final lineLen = _cachedLines[i].length;
    if (lineLen > measuredWidth) {
      measuredWidth = lineLen;
    }
  }

  final height = limit;
  return constraints.constrain(Size(measuredWidth, height));
}