paragraph method
A single-line paragraph for one run, laid out at its natural width.
Implementation
ui.Paragraph? paragraph(int styleId, String text, bool rtl) {
final key = '$styleId\u0000${rtl ? 1 : 0}\u0000$text';
final cached = _paragraphs.remove(key);
if (cached != null) {
_paragraphs[key] = cached;
return cached;
}
final style = textStyle(styleId);
if (style == null) return null;
final builder =
ui.ParagraphBuilder(ui.ParagraphStyle(textDirection: rtl ? TextDirection.rtl : TextDirection.ltr, maxLines: 1))
..pushStyle(style.getTextStyle())
..addText(text);
final paragraph = builder.build()..layout(const ui.ParagraphConstraints(width: double.infinity));
// Right-to-left text anchors to the right edge, which must be finite.
paragraph.layout(ui.ParagraphConstraints(width: paragraph.maxIntrinsicWidth.ceilToDouble()));
_paragraphs[key] = paragraph;
if (_paragraphs.length > _paragraphCacheSize) {
_paragraphs.remove(_paragraphs.keys.first)?.dispose();
}
return paragraph;
}