diff --git a/lib/flutter_html.dart b/lib/flutter_html.dart index f0b33d547d..9496d9263a 100644 --- a/lib/flutter_html.dart +++ b/lib/flutter_html.dart @@ -7,11 +7,11 @@ import 'package:flutter_html/src/html_elements.dart'; import 'package:flutter_html/style.dart'; import 'package:html/dom.dart' as dom; +export 'package:flutter_html/custom_render.dart'; //export render context api export 'package:flutter_html/html_parser.dart'; //export render context api export 'package:flutter_html/html_parser.dart'; -export 'package:flutter_html/custom_render.dart'; //export src for advanced custom render uses (e.g. casting context.tree) export 'package:flutter_html/src/anchor.dart'; export 'package:flutter_html/src/interactable_element.dart'; @@ -60,8 +60,8 @@ class Html extends StatefulWidget { this.onImageTap, this.tagsList = const [], this.style = const {}, - }) : documentElement = null, - assert (data != null), + }) : documentElement = null, + assert(data != null), _anchorKey = anchorKey ?? GlobalKey(), super(key: key); @@ -78,7 +78,7 @@ class Html extends StatefulWidget { this.onImageTap, this.tagsList = const [], this.style = const {}, - }) : data = null, + }) : data = null, assert(document != null), this.documentElement = document!.documentElement, _anchorKey = anchorKey ?? GlobalKey(), @@ -97,7 +97,7 @@ class Html extends StatefulWidget { this.onImageTap, this.tagsList = const [], this.style = const {}, - }) : data = null, + }) : data = null, assert(documentElement != null), _anchorKey = anchorKey ?? GlobalKey(), super(key: key); @@ -154,13 +154,20 @@ class Html extends StatefulWidget { } class _HtmlState extends State { - late final dom.Element documentElement; + late dom.Element documentElement; @override void initState() { super.initState(); - documentElement = - widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!; + documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!; + } + + @override + void didUpdateWidget(Html oldWidget) { + super.didUpdateWidget(oldWidget); + if ((widget.data != null && oldWidget.data != widget.data) || oldWidget.documentElement != widget.documentElement) { + documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!; + } } @override @@ -232,7 +239,7 @@ class SelectableHtml extends StatefulWidget { this.tagsList = const [], this.selectionControls, this.scrollPhysics, - }) : documentElement = null, + }) : documentElement = null, assert(data != null), _anchorKey = anchorKey ?? GlobalKey(), super(key: key); @@ -250,7 +257,7 @@ class SelectableHtml extends StatefulWidget { this.tagsList = const [], this.selectionControls, this.scrollPhysics, - }) : data = null, + }) : data = null, assert(document != null), this.documentElement = document!.documentElement, _anchorKey = anchorKey ?? GlobalKey(), @@ -269,7 +276,7 @@ class SelectableHtml extends StatefulWidget { this.tagsList = const [], this.selectionControls, this.scrollPhysics, - }) : data = null, + }) : data = null, assert(documentElement != null), _anchorKey = anchorKey ?? GlobalKey(), super(key: key);