Skip to content

Commit aac9a98

Browse files
committed
add text_message_text_builder
1 parent 5976035 commit aac9a98

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

lib/src/widgets/message/text_message.dart

+41-8
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ class TextMessage extends StatelessWidget {
9191
previewData: message.previewData,
9292
text: message.text,
9393
textWidget: _textWidgetBuilder(user, context, false),
94+
imageBuilder: options.previewImageBuilder != null
95+
? (url) => options.previewImageBuilder!.call(context, url)
96+
: null,
9497
userAgent: userAgent,
9598
width: width,
9699
);
@@ -135,14 +138,24 @@ class TextMessage extends StatelessWidget {
135138
else
136139
Text(message.text, style: emojiTextStyle)
137140
else
138-
TextMessageText(
139-
bodyLinkTextStyle: bodyLinkTextStyle,
140-
bodyTextStyle: bodyTextStyle,
141-
boldTextStyle: boldTextStyle,
142-
codeTextStyle: codeTextStyle,
143-
options: options,
144-
text: message.text,
145-
),
141+
options.textMessageTextBuilder != null
142+
? options.textMessageTextBuilder!(
143+
context,
144+
message.text,
145+
options,
146+
bodyLinkTextStyle: bodyLinkTextStyle,
147+
bodyTextStyle: bodyTextStyle,
148+
boldTextStyle: boldTextStyle,
149+
codeTextStyle: codeTextStyle,
150+
)
151+
: TextMessageText(
152+
bodyLinkTextStyle: bodyLinkTextStyle,
153+
bodyTextStyle: bodyTextStyle,
154+
boldTextStyle: boldTextStyle,
155+
codeTextStyle: codeTextStyle,
156+
options: options,
157+
text: message.text,
158+
),
146159
],
147160
);
148161
}
@@ -263,6 +276,8 @@ class TextMessageOptions {
263276
this.openOnPreviewImageTap = false,
264277
this.openOnPreviewTitleTap = false,
265278
this.matchers = const [],
279+
this.previewImageBuilder,
280+
this.textMessageTextBuilder,
266281
});
267282

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

280295
/// Additional matchers to parse the text.
281296
final List<MatchText> matchers;
297+
298+
/// Custom link preview imageBuilder.
299+
final PreviewImageBuilder? previewImageBuilder;
300+
301+
/// Add TextMessageTextBuilder to build custom text example markdown, code highlight, etc.
302+
final TextMessageTextBuilder? textMessageTextBuilder;
282303
}
304+
305+
typedef PreviewImageBuilder = Widget Function(BuildContext context, String url);
306+
307+
typedef TextMessageTextBuilder = Widget Function(
308+
BuildContext context,
309+
String text,
310+
TextMessageOptions options, {
311+
TextStyle? bodyLinkTextStyle,
312+
TextStyle? bodyTextStyle,
313+
TextStyle? boldTextStyle,
314+
TextStyle? codeTextStyle,
315+
});

0 commit comments

Comments
 (0)