Skip to content

Commit

Permalink
add text_message_text_builder
Browse files Browse the repository at this point in the history
  • Loading branch information
phamconganh committed Oct 14, 2024
1 parent 5976035 commit aac9a98
Showing 1 changed file with 41 additions and 8 deletions.
49 changes: 41 additions & 8 deletions lib/src/widgets/message/text_message.dart
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ class TextMessage extends StatelessWidget {
previewData: message.previewData,
text: message.text,
textWidget: _textWidgetBuilder(user, context, false),
imageBuilder: options.previewImageBuilder != null
? (url) => options.previewImageBuilder!.call(context, url)
: null,
userAgent: userAgent,
width: width,
);
Expand Down Expand Up @@ -135,14 +138,24 @@ class TextMessage extends StatelessWidget {
else
Text(message.text, style: emojiTextStyle)
else
TextMessageText(
bodyLinkTextStyle: bodyLinkTextStyle,
bodyTextStyle: bodyTextStyle,
boldTextStyle: boldTextStyle,
codeTextStyle: codeTextStyle,
options: options,
text: message.text,
),
options.textMessageTextBuilder != null
? options.textMessageTextBuilder!(
context,
message.text,
options,
bodyLinkTextStyle: bodyLinkTextStyle,
bodyTextStyle: bodyTextStyle,
boldTextStyle: boldTextStyle,
codeTextStyle: codeTextStyle,
)
: TextMessageText(
bodyLinkTextStyle: bodyLinkTextStyle,
bodyTextStyle: bodyTextStyle,
boldTextStyle: boldTextStyle,
codeTextStyle: codeTextStyle,
options: options,
text: message.text,
),
],
);
}
Expand Down Expand Up @@ -263,6 +276,8 @@ class TextMessageOptions {
this.openOnPreviewImageTap = false,
this.openOnPreviewTitleTap = false,
this.matchers = const [],
this.previewImageBuilder,
this.textMessageTextBuilder,
});

/// Whether user can tap and hold to select a text content.
Expand All @@ -279,4 +294,22 @@ class TextMessageOptions {

/// Additional matchers to parse the text.
final List<MatchText> matchers;

/// Custom link preview imageBuilder.
final PreviewImageBuilder? previewImageBuilder;

/// Add TextMessageTextBuilder to build custom text example markdown, code highlight, etc.
final TextMessageTextBuilder? textMessageTextBuilder;
}

typedef PreviewImageBuilder = Widget Function(BuildContext context, String url);

typedef TextMessageTextBuilder = Widget Function(
BuildContext context,
String text,
TextMessageOptions options, {
TextStyle? bodyLinkTextStyle,
TextStyle? bodyTextStyle,
TextStyle? boldTextStyle,
TextStyle? codeTextStyle,
});

0 comments on commit aac9a98

Please sign in to comment.