diff --git a/lib/src/message_text.dart b/lib/src/message_text.dart index 6ca99f6c..2ee6a6f8 100644 --- a/lib/src/message_text.dart +++ b/lib/src/message_text.dart @@ -11,10 +11,12 @@ class MessageText extends StatelessWidget { @required this.message, @required this.messageTheme, this.onMentionTap, + this.onLinkTap, }) : super(key: key); final Message message; final void Function(User) onMentionTap; + final void Function(String) onLinkTap; final MessageTheme messageTheme; @override @@ -35,7 +37,11 @@ class MessageText extends StatelessWidget { print('tap on ${mentionedUser.name}'); } } else { - launchURL(context, link); + if (onLinkTap != null) { + onLinkTap(link); + } else { + launchURL(context, link); + } } }, styleSheet: MarkdownStyleSheet.fromTheme( diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index fc6aecf2..056e433a 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -97,6 +97,9 @@ class MessageWidget extends StatefulWidget { /// The function called when tapping on UserAvatar final void Function(User) onUserAvatarTap; + /// The function called when tapping on a link + final void Function(String) onLinkTap; + final List readList; /// If true show the users username next to the timestamp of the message @@ -128,6 +131,7 @@ class MessageWidget extends StatefulWidget { this.showDeleteMessage = true, this.showEditMessage = true, this.onUserAvatarTap, + this.onLinkTap, this.onMessageActions, this.editMessageInputBuilder, this.textBuilder, @@ -764,6 +768,7 @@ class _MessageWidgetState extends State { return widget.textBuilder != null ? widget.textBuilder(context, widget.message) : MessageText( + onLinkTap: widget.onLinkTap, message: widget.message, onMentionTap: widget.onMentionTap, messageTheme: widget.messageTheme,