toHtml method
Renders the node to an HTML string.
Implementation
@override
String toHtml() {
final buffer = StringBuffer();
buffer.write('<$tag');
attributes.forEach((key, value) {
if (value == null || value == false) return;
if (value == true) {
buffer.write(' $key');
} else {
buffer.write(
' $key="${const HtmlEscape(HtmlEscapeMode.attribute).convert(value.toString())}"',
);
}
});
// Auto-inject nonce for style tags if available in Zone
if (tag == 'style' && !attributes.containsKey('nonce')) {
final nonce = Zone.current['spark.cspNonce'];
if (nonce != null && nonce is String && nonce.isNotEmpty) {
buffer.write(' nonce="$nonce"');
}
}
if (selfClosing && children.isEmpty) {
buffer.write(' />');
return buffer.toString();
}
buffer.write('>');
for (final child in children) {
buffer.write(child.toHtml());
}
buffer.write('</$tag>');
return buffer.toString();
}