render method
Renders the component as a string.
Implementation
@override
String render() {
if (_items.isEmpty) return '';
final buffer = StringBuffer();
// Calculate max term width if aligning
var maxTermLen = 0;
if (_alignTerms) {
for (final (term, _) in _items) {
final len = Style.visibleLength(term);
if (len > maxTermLen) maxTermLen = len;
}
}
final indentStr = ' ' * _indent;
final gapStr = ' ' * _gap;
for (var i = 0; i < _items.length; i++) {
if (i > 0) buffer.writeln();
final (term, description) = _items[i];
// Pad term if aligning
String paddedTerm;
if (_alignTerms) {
final termLen = Style.visibleLength(term);
final padding = ' ' * (maxTermLen - termLen);
paddedTerm = '$term$padding';
} else {
paddedTerm = term;
}
final styledTerm = _applyTermStyle(paddedTerm, description, i);
final styledSeparator = _applySeparatorStyle(_separator);
final styledDescription = _applyDescriptionStyle(description, term, i);
buffer.write(
'$indentStr$styledTerm$styledSeparator$gapStr$styledDescription',
);
}
return buffer.toString();
}