Skip to content

Commit 9aac393

Browse files
authored
Merge pull request #667 from leoafarias/master
Allow for scroll to html elements from outside HTML widget
2 parents ff9e53a + c6cacad commit 9aac393

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

lib/flutter_html.dart

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,38 @@
11
library flutter_html;
22

3-
//export image render api
4-
export 'package:flutter_html/image_render.dart';
5-
//export style api
6-
export 'package:flutter_html/style.dart';
7-
//export render context api
8-
export 'package:flutter_html/html_parser.dart';
9-
//export src for advanced custom render uses (e.g. casting context.tree)
10-
export 'package:flutter_html/src/layout_element.dart';
11-
export 'package:flutter_html/src/replaced_element.dart';
12-
export 'package:flutter_html/src/styled_element.dart';
13-
export 'package:flutter_html/src/interactable_element.dart';
14-
153
import 'package:flutter/material.dart';
164
import 'package:flutter/rendering.dart';
175
import 'package:flutter_html/html_parser.dart';
186
import 'package:flutter_html/image_render.dart';
197
import 'package:flutter_html/src/html_elements.dart';
208
import 'package:flutter_html/style.dart';
21-
import 'package:webview_flutter/webview_flutter.dart';
229
import 'package:html/dom.dart' as dom;
10+
import 'package:webview_flutter/webview_flutter.dart';
11+
12+
//export render context api
13+
export 'package:flutter_html/html_parser.dart';
14+
//export render context api
15+
export 'package:flutter_html/html_parser.dart';
16+
//export image render api
17+
export 'package:flutter_html/image_render.dart';
18+
//export image render api
19+
export 'package:flutter_html/image_render.dart';
20+
export 'package:flutter_html/src/anchor.dart';
21+
export 'package:flutter_html/src/anchor.dart';
22+
export 'package:flutter_html/src/interactable_element.dart';
23+
export 'package:flutter_html/src/interactable_element.dart';
24+
//export src for advanced custom render uses (e.g. casting context.tree)
25+
export 'package:flutter_html/src/layout_element.dart';
26+
//export src for advanced custom render uses (e.g. casting context.tree)
27+
export 'package:flutter_html/src/layout_element.dart';
28+
export 'package:flutter_html/src/replaced_element.dart';
29+
export 'package:flutter_html/src/replaced_element.dart';
30+
export 'package:flutter_html/src/styled_element.dart';
31+
export 'package:flutter_html/src/styled_element.dart';
32+
//export style api
33+
export 'package:flutter_html/style.dart';
34+
//export style api
35+
export 'package:flutter_html/style.dart';
2336

2437
class Html extends StatelessWidget {
2538
/// The `Html` widget takes HTML as input and displays a RichText
@@ -49,6 +62,7 @@ class Html extends StatelessWidget {
4962
/// See [its wiki page](https://github.com/Sub6Resources/flutter_html/wiki/Style) for more info.
5063
Html({
5164
Key? key,
65+
GlobalKey? anchorKey,
5266
required this.data,
5367
this.onLinkTap,
5468
this.customRender = const {},
@@ -61,13 +75,14 @@ class Html extends StatelessWidget {
6175
this.tagsList = const [],
6276
this.style = const {},
6377
this.navigationDelegateForIframe,
64-
}) : document = null,
65-
assert (data != null),
66-
anchorKey = GlobalKey(),
78+
}) : document = null,
79+
assert(data != null),
80+
_anchorKey = anchorKey ?? GlobalKey(),
6781
super(key: key);
6882

6983
Html.fromDom({
7084
Key? key,
85+
GlobalKey? anchorKey,
7186
@required this.document,
7287
this.onLinkTap,
7388
this.customRender = const {},
@@ -80,13 +95,13 @@ class Html extends StatelessWidget {
8095
this.tagsList = const [],
8196
this.style = const {},
8297
this.navigationDelegateForIframe,
83-
}) : data = null,
98+
}) : data = null,
8499
assert(document != null),
85-
anchorKey = GlobalKey(),
100+
_anchorKey = anchorKey ?? GlobalKey(),
86101
super(key: key);
87102

88103
/// A unique key for this Html widget to ensure uniqueness of anchors
89-
final Key anchorKey;
104+
final GlobalKey _anchorKey;
90105

91106
/// The HTML data passed to the widget as a String
92107
final String? data;
@@ -111,7 +126,6 @@ class Html extends StatelessWidget {
111126
/// You can return a widget here to override the default error widget.
112127
final OnMathError? onMathError;
113128

114-
115129
/// A parameter that should be set when the HTML widget is expected to be
116130
/// flexible
117131
final bool shrinkWrap;
@@ -143,13 +157,14 @@ class Html extends StatelessWidget {
143157

144158
@override
145159
Widget build(BuildContext context) {
146-
final dom.Document doc = data != null ? HtmlParser.parseHTML(data!) : document!;
160+
final dom.Document doc =
161+
data != null ? HtmlParser.parseHTML(data!) : document!;
147162
final double? width = shrinkWrap ? null : MediaQuery.of(context).size.width;
148163

149164
return Container(
150165
width: width,
151166
child: HtmlParser(
152-
key: anchorKey,
167+
key: _anchorKey,
153168
htmlData: doc,
154169
onLinkTap: onLinkTap,
155170
onImageTap: onImageTap,

0 commit comments

Comments
 (0)