Skip to content

Commit f9a4503

Browse files
author
Arjan Mels
committed
Fixes dynamic changing of data/documentElement
Signed-off-by: Arjan Mels <github@mels.email>
1 parent 908f4cd commit f9a4503

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

lib/flutter_html.dart

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import 'package:flutter_html/src/html_elements.dart';
77
import 'package:flutter_html/style.dart';
88
import 'package:html/dom.dart' as dom;
99

10+
export 'package:flutter_html/custom_render.dart';
1011
//export render context api
1112
export 'package:flutter_html/html_parser.dart';
1213
//export render context api
1314
export 'package:flutter_html/html_parser.dart';
14-
export 'package:flutter_html/custom_render.dart';
1515
//export src for advanced custom render uses (e.g. casting context.tree)
1616
export 'package:flutter_html/src/anchor.dart';
1717
export 'package:flutter_html/src/interactable_element.dart';
@@ -60,8 +60,8 @@ class Html extends StatefulWidget {
6060
this.onImageTap,
6161
this.tagsList = const [],
6262
this.style = const {},
63-
}) : documentElement = null,
64-
assert (data != null),
63+
}) : documentElement = null,
64+
assert(data != null),
6565
_anchorKey = anchorKey ?? GlobalKey(),
6666
super(key: key);
6767

@@ -78,7 +78,7 @@ class Html extends StatefulWidget {
7878
this.onImageTap,
7979
this.tagsList = const [],
8080
this.style = const {},
81-
}) : data = null,
81+
}) : data = null,
8282
assert(document != null),
8383
this.documentElement = document!.documentElement,
8484
_anchorKey = anchorKey ?? GlobalKey(),
@@ -97,7 +97,7 @@ class Html extends StatefulWidget {
9797
this.onImageTap,
9898
this.tagsList = const [],
9999
this.style = const {},
100-
}) : data = null,
100+
}) : data = null,
101101
assert(documentElement != null),
102102
_anchorKey = anchorKey ?? GlobalKey(),
103103
super(key: key);
@@ -154,13 +154,20 @@ class Html extends StatefulWidget {
154154
}
155155

156156
class _HtmlState extends State<Html> {
157-
late final dom.Element documentElement;
157+
late dom.Element documentElement;
158158

159159
@override
160160
void initState() {
161161
super.initState();
162-
documentElement =
163-
widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
162+
documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
163+
}
164+
165+
@override
166+
void didUpdateWidget(Html oldWidget) {
167+
super.didUpdateWidget(oldWidget);
168+
if ((widget.data != null && oldWidget.data != widget.data) || oldWidget.documentElement != widget.documentElement) {
169+
documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
170+
}
164171
}
165172

166173
@override
@@ -232,7 +239,7 @@ class SelectableHtml extends StatefulWidget {
232239
this.tagsList = const [],
233240
this.selectionControls,
234241
this.scrollPhysics,
235-
}) : documentElement = null,
242+
}) : documentElement = null,
236243
assert(data != null),
237244
_anchorKey = anchorKey ?? GlobalKey(),
238245
super(key: key);
@@ -250,7 +257,7 @@ class SelectableHtml extends StatefulWidget {
250257
this.tagsList = const [],
251258
this.selectionControls,
252259
this.scrollPhysics,
253-
}) : data = null,
260+
}) : data = null,
254261
assert(document != null),
255262
this.documentElement = document!.documentElement,
256263
_anchorKey = anchorKey ?? GlobalKey(),
@@ -269,7 +276,7 @@ class SelectableHtml extends StatefulWidget {
269276
this.tagsList = const [],
270277
this.selectionControls,
271278
this.scrollPhysics,
272-
}) : data = null,
279+
}) : data = null,
273280
assert(documentElement != null),
274281
_anchorKey = anchorKey ?? GlobalKey(),
275282
super(key: key);

0 commit comments

Comments
 (0)