performLayout method
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));
}