layout method

TextLayout layout(
  1. InlineSpan root,
  2. BoxConstraints constraints, {
  3. TextStyle style = const TextStyle(),
})

Lays out root using constraints.

Implementation

TextLayout layout(
  InlineSpan root,
  BoxConstraints constraints, {
  TextStyle style = const TextStyle(),
}) {
  final runs = <_SourceRun>[];
  final textBuffer = StringBuffer();
  _flatten(root, style, null, textBuffer, runs);
  final text = textBuffer.toString();
  final effectiveStyle = root is TextSpan ? root.style ?? style : style;
  final indexMap = TextIndexMap(text);
  final laidOut = _layoutRuns(runs, constraints.maxWidth);
  return TextLayout(
    text: text,
    style: effectiveStyle,
    indexMap: indexMap,
    lines: laidOut.lines,
    size: Size(
      constraints.constrainWidth(laidOut.maxLineWidth),
      constraints.constrainHeight(math.max(1, laidOut.lines.length)),
    ),
  );
}