build method
As the widget builds, the HTML data is processed into a tree of StyledElements, which are then parsed into an InlineSpan tree that is then rendered to the screen by Flutter
Implementation
//TODO Lazy processing of data. We don't need the processing steps done every build phase unless the data has changed.
@override
Widget build(BuildContext context) {
// Lexing Step
StyledElement lexedTree = lexDomTree(
htmlData,
customRenders.keys.toList(),
tagsList,
context,
this,
);
// Styling Step
StyledElement styledTree =
styleTree(lexedTree, htmlData, style, onCssParseError);
// Processing Step
StyledElement processedTree =
processTree(styledTree, MediaQuery.of(context).devicePixelRatio);
// Parsing Step
InlineSpan parsedTree = parseTree(
RenderContext(
buildContext: context,
parser: this,
tree: processedTree,
style: processedTree.style,
),
processedTree,
);
return CssBoxWidget.withInlineSpanChildren(
style: processedTree.style,
children: [parsedTree],
selectable: selectable,
scrollPhysics: scrollPhysics,
selectionControls: selectionControls,
shrinkWrap: shrinkWrap,
);
}