Skip to content

Commit 93ea457

Browse files
committed
add text_message_text_builder
1 parent 5976035 commit 93ea457

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

lib/src/widgets/message/text_message.dart

+32-8
Original file line numberDiff line numberDiff line change
@@ -135,14 +135,24 @@ class TextMessage extends StatelessWidget {
135135
else
136136
Text(message.text, style: emojiTextStyle)
137137
else
138-
TextMessageText(
139-
bodyLinkTextStyle: bodyLinkTextStyle,
140-
bodyTextStyle: bodyTextStyle,
141-
boldTextStyle: boldTextStyle,
142-
codeTextStyle: codeTextStyle,
143-
options: options,
144-
text: message.text,
145-
),
138+
options.textMessageTextBuilder != null
139+
? options.textMessageTextBuilder!(
140+
context,
141+
message.text,
142+
bodyLinkTextStyle: bodyLinkTextStyle,
143+
bodyTextStyle: bodyTextStyle,
144+
boldTextStyle: boldTextStyle,
145+
codeTextStyle: codeTextStyle,
146+
options: options,
147+
)
148+
: TextMessageText(
149+
bodyLinkTextStyle: bodyLinkTextStyle,
150+
bodyTextStyle: bodyTextStyle,
151+
boldTextStyle: boldTextStyle,
152+
codeTextStyle: codeTextStyle,
153+
options: options,
154+
text: message.text,
155+
),
146156
],
147157
);
148158
}
@@ -263,6 +273,7 @@ class TextMessageOptions {
263273
this.openOnPreviewImageTap = false,
264274
this.openOnPreviewTitleTap = false,
265275
this.matchers = const [],
276+
this.textMessageTextBuilder,
266277
});
267278

268279
/// Whether user can tap and hold to select a text content.
@@ -279,4 +290,17 @@ class TextMessageOptions {
279290

280291
/// Additional matchers to parse the text.
281292
final List<MatchText> matchers;
293+
294+
/// Add TextMessageTextBuilder to build custom text example markdown, code highlight, etc.
295+
final TextMessageTextBuilder? textMessageTextBuilder;
282296
}
297+
298+
typedef TextMessageTextBuilder = Widget Function(
299+
BuildContext context,
300+
String text, {
301+
TextMessageOptions options,
302+
TextStyle? bodyLinkTextStyle,
303+
TextStyle? bodyTextStyle,
304+
TextStyle? boldTextStyle,
305+
TextStyle? codeTextStyle,
306+
});

0 commit comments

Comments
 (0)