render method
Renders the component as a string.
Implementation
@override
String render() {
if (_groups.isEmpty) return '';
final buffer = StringBuffer();
// Calculate max term width across all groups if needed
var globalMaxTermLen = 0;
if (_alignAcrossGroups) {
for (final (_, items) in _groups) {
for (final term in items.keys) {
final len = Style.visibleLength(term);
if (len > globalMaxTermLen) globalMaxTermLen = len;
}
}
}
final groupIndentStr = ' ' * _groupIndent;
final spacingLines = '\n' * _groupSpacing;
for (var g = 0; g < _groups.length; g++) {
if (g > 0) buffer.write(spacingLines);
final (header, items) = _groups[g];
// Render header
buffer.writeln('$groupIndentStr${_applyHeaderStyle(header)}');
// Build definition list for this group
final list = DefinitionList(renderConfig: _renderConfig)
..items(items)
..separator(_separator)
..indent(_indent)
..gap(_gap)
..alignTerms(_alignTerms);
if (_termStyle != null) list.termStyle(_termStyle!);
if (_descriptionStyle != null) list.descriptionStyle(_descriptionStyle!);
if (_separatorStyle != null) list.separatorStyle(_separatorStyle!);
if (_styleFunc != null) list.styleFunc(_styleFunc!);
buffer.write(list.render());
}
return buffer.toString();
}