From 98299e28c45553410a3e9cd35af22cdfd2572f01 Mon Sep 17 00:00:00 2001 From: Minh Tri Date: Thu, 30 May 2024 10:45:15 +0700 Subject: [PATCH] feat: return linkify list --- lib/src/linkify.dart | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/src/linkify.dart b/lib/src/linkify.dart index 0010965..75e6676 100644 --- a/lib/src/linkify.dart +++ b/lib/src/linkify.dart @@ -24,6 +24,7 @@ class LinkifyText extends StatelessWidget { this.maxLines, this.semanticsLabel, this.textWidthBasis, + this.linkifyListCallBack, Key? key}) : super(key: key); @@ -131,6 +132,8 @@ class LinkifyText extends StatelessWidget { final Map? customLinkStyles; + final void Function(List)? linkifyListCallBack; + @override Widget build(BuildContext context) { return Text.rich( @@ -139,7 +142,8 @@ class LinkifyText extends StatelessWidget { linkStyle: linkStyle, onTap: onTap, linkTypes: linkTypes, - customLinkStyles: customLinkStyles), + customLinkStyles: customLinkStyles, + linkifyListCallBack: linkifyListCallBack), key: key, style: textStyle, strutStyle: strutStyle, @@ -374,6 +378,7 @@ TextSpan _linkify({ List? linkTypes, Map? customLinkStyles, Function(Link)? onTap, + Function(List)? linkifyListCallBack, }) { final _regExp = constructRegExpFromLinkType(linkTypes ?? [LinkType.url]); @@ -383,6 +388,7 @@ TextSpan _linkify({ final texts = text.split(_regExp); final List spans = []; final links = _regExp.allMatches(text).toList(); + final List linkifyList = []; for (final text in texts) { spans.add(TextSpan( @@ -402,7 +408,12 @@ TextSpan _linkify({ }, ), ); + + linkifyList.add(link); } } + + linkifyListCallBack?.call(linkifyList); + return TextSpan(children: spans); }