toHtmlDocument method
Renders the complete HTML document.
Implementation
String toHtmlDocument() {
final language = HtmlRenderer.escapeAttribute(lang);
final effectiveFeatures = {
...domFirstFeatures,
if (applicationRuntime?.reference is SeoDomFirstTabsApplicationRuntime)
SeoDomFirstFeature.tabs,
};
final head = StringBuffer();
head.write(
seoDomFirstFeatureBootstrapScriptHtml(
domFirstFeatures,
nonce: interactionNonce,
),
);
if (stylesheet != null && stylesheet!.trim().isNotEmpty) {
head.write(seoStyleTagHtml(stylesheet!, nonce: interactionNonce));
}
if (enableInteractions) {
head.write(seoInteractionStyleHtml(nonce: interactionNonce));
}
head.write(
seoDomFirstFeatureStyleHtml(
effectiveFeatures,
nonce: interactionNonce,
),
);
final runtime = StringBuffer();
if (enableInteractions) {
runtime.write(seoInteractionScriptHtml(nonce: interactionNonce));
}
runtime.write(
seoDomFirstFeatureScriptHtml(
domFirstFeatures,
nonce: interactionNonce,
),
);
if (applicationRuntime case final artifact?) {
runtime.write(_applicationRuntimeScriptHtml(
artifact,
nonce: interactionNonce,
));
}
return '<!DOCTYPE html>'
'<html lang="$language">'
'<head>'
'<meta charset="utf-8"/>'
'<meta name="viewport" content="width=device-width, initial-scale=1"/>'
'${meta.toHtml()}'
'$head'
'</head>'
'<body>$bodyHtml$runtime</body>'
'</html>';
}