@@ -31,18 +31,18 @@ This guide covers migrating the message widget and message list view from the ol
3131| -----| -----|
3232| ` StreamMessageWidget ` (50+ params) | ` StreamMessageWidget ` (thin shell) + ` StreamMessageWidgetProps ` |
3333| ` MessageWidgetContent ` | ` DefaultStreamMessage ` + ` StreamMessageContent ` |
34- | ` BottomRow ` | ` StreamMessageFooter ` |
34+ | ` BottomRow ` | ` StreamMessageMetadata ` |
3535| ` StreamMessageText ` (message_text.dart) | ` StreamMessageText ` (components/stream_message_text.dart) |
3636| ` StreamDeletedMessage ` | ` StreamMessageDeleted ` |
3737| ` MessageCard ` | ` core.StreamMessageBubble ` |
3838| ` TextBubble ` | ` core.StreamMessageBubble ` |
39- | ` PinnedMessage ` | ` streamMessageHeader() ` function |
39+ | ` PinnedMessage ` | ` StreamMessageAnnotations ` widget |
4040| ` QuotedMessage ` | Inline in ` StreamMessageContent ` |
41- | ` Username ` | Inline in ` StreamMessageFooter ` |
41+ | ` Username ` | Inline in ` StreamMessageMetadata ` |
4242| ` SendingIndicatorBuilder ` | ` StreamMessageSendingStatus ` |
4343| ` ThreadReplyPainter ` | ` core.StreamMessageReplies ` |
4444| ` ThreadParticipants ` | Inline in ` core.StreamMessageReplies ` |
45- | ` UserAvatarTransform ` | ` StreamMessageLeading ` |
45+ | ` UserAvatarTransform ` | ` StreamUserAvatar ` (inline in ` DefaultStreamMessage ` ) |
4646| ` DisplayWidget ` enum | ` StreamVisibility ` (from theme) |
4747| ` MessageBuilder ` typedef | ` StreamMessageWidgetBuilder ` typedef |
4848| ` ParentMessageBuilder ` typedef | ` StreamMessageWidgetBuilder ` typedef |
@@ -61,10 +61,10 @@ The old design used a single monolithic `StreamMessageWidget` with 50+ parameter
6161- ** ` StreamMessageWidget ` ** — thin shell that resolves the ` StreamComponentFactory ` and delegates to the factory builder or ` DefaultStreamMessage ` .
6262- ** ` StreamMessageWidgetProps ` ** — plain data class holding all configuration. Supports ` copyWith() ` .
6363- ** ` DefaultStreamMessage ` ** — the default rendering implementation. Composes the sub-components below.
64- - ** ` StreamMessageContent ` ** — bubble, attachments, text, reactions, thread replies.
65- - ** ` StreamMessageFooter ` ** — username, timestamp, sending status, edited indicator.
66- - ** ` streamMessageHeader() ` ** — pinned, saved-for-later, show-in-channel annotations.
67- - ** ` StreamMessageLeading ` ** — author avatar.
64+ - ** ` StreamMessageContent ` ** — bubble, attachments, text, reactions. Thread replies are passed in as a pre-built widget from ` DefaultStreamMessage ` .
65+ - ** ` StreamMessageMetadata ` ** — username, timestamp, sending status, edited indicator.
66+ - ** ` StreamMessageAnnotations ` ** — pinned, saved-for-later, show-in-channel annotations.
67+ - ** ` StreamUserAvatar ` ** — author avatar (inline in ` DefaultStreamMessage ` ) .
6868- ** ` StreamMessageReactions ` ** — clustered reaction chips around the bubble.
6969- ** ` StreamMessageText ` ** — markdown-rendered message text.
7070- ** ` StreamMessageDeleted ` ** — deleted message placeholder.
@@ -130,13 +130,13 @@ These parameters have been removed entirely. See the **Migration Path** column f
130130| ` showPinButton ` | Controlled via channel permissions (` canPinMessage ` ) |
131131| ` showPinHighlight ` | Controlled via ` StreamMessageItemThemeData ` background color |
132132| ` showReactionPicker ` | Removed |
133- | ` showUsername ` | Controlled via ` StreamMessageItemThemeData.footerVisibility ` |
134- | ` showTimestamp ` | Controlled via ` StreamMessageItemThemeData.footerVisibility ` |
135- | ` showEditedLabel ` | Controlled via ` StreamMessageItemThemeData.footerVisibility ` |
136- | ` showSendingIndicator ` | Controlled via ` StreamMessageItemThemeData.footerVisibility ` |
137- | ` showThreadReplyIndicator ` | Shown automatically when ` replyCount > 0 ` |
138- | ` showInChannelIndicator ` | Shown automatically via ` streamMessageHeader() ` |
139- | ` showUserAvatar ` (` DisplayWidget ` ) | Controlled via ` StreamMessageItemThemeData.leadingVisibility ` |
133+ | ` showUsername ` | Controlled via ` StreamMessageItemThemeData.metadataVisibility ` |
134+ | ` showTimestamp ` | Controlled via ` StreamMessageItemThemeData.metadataVisibility ` |
135+ | ` showEditedLabel ` | Controlled via ` StreamMessageItemThemeData.metadataVisibility ` |
136+ | ` showSendingIndicator ` | Controlled via ` StreamMessageItemThemeData.metadataVisibility ` |
137+ | ` showThreadReplyIndicator ` | Controlled via ` StreamMessageItemThemeData.repliesVisibility ` |
138+ | ` showInChannelIndicator ` | Shown automatically via ` StreamMessageAnnotations ` |
139+ | ` showUserAvatar ` (` DisplayWidget ` ) | Controlled via ` StreamMessageItemThemeData.avatarVisibility ` |
140140
141141#### Builder Callbacks
142142
@@ -147,7 +147,7 @@ These parameters have been removed entirely. See the **Migration Path** column f
147147| ` quotedMessageBuilder ` | Use component factory to replace ` StreamMessageContent ` |
148148| ` deletedMessageBuilder ` | Use component factory to replace ` StreamMessageContent ` |
149149| ` editMessageInputBuilder ` | Removed; use ` onEditMessageTap ` callback instead |
150- | ` bottomRowBuilderWithDefaultWidget ` | Use component factory; ` StreamMessageFooter ` is the new equivalent |
150+ | ` bottomRowBuilderWithDefaultWidget ` | Use component factory; ` StreamMessageMetadata ` is the new equivalent |
151151| ` reactionPickerBuilder ` | Configured globally via ` StreamChatConfigurationData.reactionIconResolver ` |
152152| ` reactionIndicatorBuilder ` | Replaced by ` StreamMessageReactions ` component |
153153
@@ -400,12 +400,13 @@ The old per-property visibility booleans are replaced by a structured visibility
400400
401401``` dart
402402StreamMessageItemThemeData(
403- leadingVisibility : StreamMessageStyleVisibility(
403+ avatarVisibility : StreamMessageStyleVisibility(
404404 incoming: StreamVisibility.visible,
405405 outgoing: StreamVisibility.gone,
406406 ),
407- headerVisibility: StreamMessageStyleVisibility(...),
408- footerVisibility: StreamMessageStyleVisibility(...),
407+ annotationVisibility: StreamMessageStyleVisibility(...),
408+ metadataVisibility: StreamMessageStyleVisibility(...),
409+ repliesVisibility: StreamMessageStyleVisibility(...),
409410
410411 incoming: StreamMessageItemStyle(
411412 padding: EdgeInsets.all(4),
@@ -451,17 +452,17 @@ StreamMessageListView(
451452| ---| ---| ---|
452453| ` message_widget_content.dart ` | ` MessageWidgetContent ` | ` DefaultStreamMessage ` + ` StreamMessageContent ` |
453454| ` message_widget_content_components.dart ` | Various internal helpers | Merged into ` components/ ` sub-widgets |
454- | ` bottom_row.dart ` | ` BottomRow ` | ` StreamMessageFooter ` |
455+ | ` bottom_row.dart ` | ` BottomRow ` | ` StreamMessageMetadata ` |
455456| ` message_text.dart ` | ` StreamMessageText ` | ` components/stream_message_text.dart ` |
456457| ` deleted_message.dart ` | ` StreamDeletedMessage ` | ` StreamMessageDeleted ` |
457458| ` message_card.dart ` | ` MessageCard ` | ` core.StreamMessageBubble ` |
458459| ` text_bubble.dart ` | ` TextBubble ` | ` core.StreamMessageBubble ` |
459- | ` pinned_message.dart ` | ` PinnedMessage ` | ` streamMessageHeader() ` function |
460+ | ` pinned_message.dart ` | ` PinnedMessage ` | ` StreamMessageAnnotations ` widget |
460461| ` quoted_message.dart ` | ` QuotedMessage ` | Inline in ` StreamMessageContent ` |
461462| ` thread_painter.dart ` | ` ThreadReplyPainter ` | ` core.StreamMessageReplies ` |
462463| ` thread_participants.dart ` | ` ThreadParticipants ` | Inline in ` core.StreamMessageReplies ` |
463- | ` user_avatar_transform.dart ` | ` UserAvatarTransform ` | ` StreamMessageLeading ` |
464- | ` username.dart ` | ` Username ` | Inline in ` StreamMessageFooter ` |
464+ | ` user_avatar_transform.dart ` | ` UserAvatarTransform ` | ` StreamUserAvatar ` (inline in ` DefaultStreamMessage ` ) |
465+ | ` username.dart ` | ` Username ` | Inline in ` StreamMessageMetadata ` |
465466| ` sending_indicator_builder.dart ` | ` SendingIndicatorBuilder ` | ` StreamMessageSendingStatus ` |
466467
467468---
0 commit comments