Skip to content

Commit b5c5ea0

Browse files
authored
Merge pull request Sub6Resources#541 from tneotia/feature/upgrade-link-functions
Upgrade link functions
2 parents 957ae3b + 8db0104 commit b5c5ea0

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

lib/html_parser.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ import 'package:html/dom.dart' as dom;
1616
import 'package:html/parser.dart' as htmlparser;
1717
import 'package:webview_flutter/webview_flutter.dart';
1818

19-
typedef OnTap = void Function(String url);
19+
typedef OnTap = void Function(
20+
String url,
21+
RenderContext context,
22+
Map<String, String> attributes,
23+
dom.Element element,
24+
);
2025
typedef CustomRender = dynamic Function(
2126
RenderContext context,
2227
Widget parsedChild,
@@ -371,7 +376,7 @@ class HtmlParser extends StatelessWidget {
371376
: childStyle.merge(childSpan.style)),
372377
semanticsLabel: childSpan.semanticsLabel,
373378
recognizer: TapGestureRecognizer()
374-
..onTap = () => onLinkTap?.call(tree.href),
379+
..onTap = () => onLinkTap?.call(tree.href, context, tree.attributes, tree.element),
375380
);
376381
} else {
377382
return WidgetSpan(
@@ -382,7 +387,7 @@ class HtmlParser extends StatelessWidget {
382387
MultipleTapGestureRecognizer>(
383388
() => MultipleTapGestureRecognizer(),
384389
(instance) {
385-
instance..onTap = () => onLinkTap?.call(tree.href);
390+
instance..onTap = () => onLinkTap?.call(tree.href, context, tree.attributes, tree.element);
386391
},
387392
),
388393
},

lib/src/replaced_element.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
88
import 'package:flutter/widgets.dart';
99
import 'package:flutter_html/html_parser.dart';
1010
import 'package:flutter_html/src/html_elements.dart';
11+
import 'package:flutter_html/src/utils.dart';
1112
import 'package:flutter_html/style.dart';
1213
import 'package:flutter_svg/flutter_svg.dart';
1314
import 'package:html/dom.dart' as dom;
@@ -82,7 +83,16 @@ class ImageContentElement extends ReplacedElement {
8283
if (entry.key.call(attributes, element)) {
8384
final widget = entry.value.call(context, attributes, element);
8485
if (widget != null) {
85-
return widget;
86+
return RawGestureDetector(
87+
child: widget,
88+
gestures: {
89+
MultipleTapGestureRecognizer: GestureRecognizerFactoryWithHandlers<MultipleTapGestureRecognizer>(
90+
() => MultipleTapGestureRecognizer(), (instance) {
91+
instance..onTap = () => context.parser.onImageTap?.call(src, context, attributes, element);
92+
},
93+
),
94+
},
95+
);
8696
}
8797
}
8898
}

0 commit comments

Comments
 (0)