Skip to main content
Enhance your Flutter chat app with threaded messaging using CometChat V6’s CometChatMessageList and CometChatThreadedHeader components.

Overview

  • Reply to specific messages to start focused sub-conversations
  • View all replies grouped under the parent message
  • Seamlessly switch back to the main conversation

Prerequisites

  • A Flutter project with CometChat UIKit Flutter V6 installed
  • Initialized CometChat credentials

Components

ComponentRole
CometChatMessageListDisplays main chat; provides onThreadRepliesClick callback
CometChatThreadedHeaderShows the parent message and thread context
CometChatMessageComposerSends new messages; pass parentMessageId for replies

Integration Steps

Show the “Reply in Thread” Option

CometChatMessageList(
  user: user,
  onThreadRepliesClick: (BaseMessage message) {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (_) => ThreadScreen(parentMessage: message, user: user),
      ),
    );
  },
)
In V6, compose the thread screen using individual widgets:
class ThreadScreen extends StatelessWidget {
  final BaseMessage parentMessage;
  final User? user;
  final Group? group;

  const ThreadScreen({required this.parentMessage, this.user, this.group, super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Thread")),
      body: Column(
        children: [
          CometChatThreadedHeader(message: parentMessage),
          Expanded(
            child: CometChatMessageList(
              user: user,
              group: group,
              parentMessageId: parentMessage.id,
            ),
          ),
          CometChatMessageComposer(
            user: user,
            group: group,
            parentMessageId: parentMessage.id,
          ),
        ],
      ),
    );
  }
}

Send a Threaded Message

CometChatMessageComposer(
  user: user,
  parentMessageId: parentMessage.id,
)

Customization Options

  • Header Styling: Customize CometChatThreadedHeader appearance
  • Composer Placeholder: Change placeholder text based on thread context
  • Empty State: Display “No replies yet” when thread is empty

Summary

FeatureComponent / Method
Show thread optionCometChatMessageList.onThreadRepliesClick
Thread view screenCustom ThreadScreen widget
Display threaded messagesCometChatMessageList(parentMessageId: ...)
Send threaded messageCometChatMessageComposer(parentMessageId: ...)
Thread headerCometChatThreadedHeader(message: ...)