Skip to main content

Overview

CometChatMessageComposer is a Widget that enables users to write and send a variety of messages, including text, image, video, and custom messages. Features such as Live Reaction, Attachments, Message Editing, Rich Text Formatting, Code Blocks, and Inline Audio Recording are supported. CometChatMessageComposer is comprised of the following Base Widgets: In V6, the composer is powered by MessageComposerBloc and decomposed into focused sub-widgets.

Usage

Integration

1. Using Navigator to Launch CometChatMessageComposer
2. Embedding CometChatMessageComposer as a Widget in the build Method

Actions

1. OnSendButtonClick
The OnSendButtonClick event gets activated when the send message button is clicked.

2. onChange
Handles changes in the value of text in the input field.

3. onError
Listens for any errors that occur.

Filters

CometChatMessageComposer widget does not have any available filters.

Events

The CometChatMessageComposer Widget does not emit any events of its own.

Customization

Style

1. CometChatMessageComposerStyle
2. MediaRecorder Style

Functionality

Message Composer Properties


Advanced

TextFormatters


AttachmentOptions


AuxiliaryButton Widget

You can customize the auxiliary button area (mic, sticker, etc.) using the auxiliaryButtonView parameter:

Layout

The composer skeleton supports two layouts via the layout prop: All existing props (hide flags, view slots, style, mentions, rich text, voice recording, reply/edit preview, AI options) work identically in both layouts.

Rich Text Formatting

The composer ships with a WYSIWYG rich-text toolbar that parses Markdown as the user types and renders formatted spans in place. Configuration is done with three flat props.

Enable with defaults

Rich text is on by default — no props required.

Show or hide the toolbar UI

showRichTextFormattingOptions controls toolbar visibility. When false, markdown is still parsed in typed text but no toolbar is rendered.

Hide specific format buttons

Pass a Set<FormatType> listing the buttons to remove from the toolbar.

Disable rich text entirely

Set enableRichTextFormatting: false to behave as a plain text field — no markdown parsing, no toolbar, regardless of the other two props.

FormatType values

Custom toolbar view

richTextToolbarView receives the active controller. Because the controller is a RichTextEditingController under the hood, apply formats directly via applyFormat.

V6 Architecture

Sub-Widget Decomposition

BLoC Architecture

Use Cases