Skip to main content
CometChatSearch provides unified search functionality across conversations and messages. In V6, it uses a single consolidated SearchBloc replacing the three separate controllers from V5.

Where It Fits

CometChatSearch is typically launched from a search button in the conversations list or message header. It searches across both conversations and messages, displaying results in categorized sections.
CometChatSearch(
  onConversationItemClick: (conversation) {
    // Navigate to conversation
  },
  onMessageItemClick: (message) {
    // Navigate to message in context
  },
)

Quick Start

Using Navigator:
Navigator.push(context, MaterialPageRoute(builder: (context) => CometChatSearch()));
Embedding as a widget:
@override
Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: CometChatSearch(),
    ),
  );
}
Launching from conversations with search button:
CometChatConversations(
  hideSearch: false,
  searchReadOnly: true,
  onSearchTap: () {
    Navigator.push(context, MaterialPageRoute(
      builder: (context) => CometChatSearch(
        onConversationItemClick: (conversation) {
          // Navigate to chat
        },
        onMessageItemClick: (message) {
          // Navigate to message
        },
      ),
    ));
  },
)
Prerequisites: CometChat SDK initialized with CometChatUIKit.init() and a user logged in.

Actions and Events

Callback Methods

onConversationItemClick

Fires when a conversation result is tapped.
CometChatSearch(
  onConversationItemClick: (conversation) {
    final entity = conversation.conversationWith;
    if (entity is User) {
      navigateToUserChat(entity);
    } else if (entity is Group) {
      navigateToGroupChat(entity);
    }
  },
)

onMessageItemClick

Fires when a message result is tapped.
CometChatSearch(
  onMessageItemClick: (message) {
    // Navigate to the message in its conversation
  },
)

onBack

Fires when the user presses the back button.
CometChatSearch(
  onBack: () {
    Navigator.pop(context);
  },
)

onError

Fires on internal errors.
CometChatSearch(
  onError: (e) {
    debugPrint("Search error: ${e.message}");
  },
)

Functionality

PropertyTypeDefaultDescription
showBackButtonbool?trueToggle back button visibility
placeholderString?nullSearch input placeholder text
hideConversationResultsbool?falseHide conversation search results
hideMessageResultsbool?falseHide message search results

Custom View Slots

Conversation Item View

Replace the conversation result item.
CometChatSearch(
  conversationItemView: (conversation, context) {
    return ListTile(
      leading: CircleAvatar(child: Text(conversation.conversationWith?.name?[0] ?? "")),
      title: Text(conversation.conversationWith?.name ?? ""),
    );
  },
)

Message Item View

Replace the message result item.
CometChatSearch(
  messageItemView: (message, context) {
    return ListTile(
      title: Text(message.sender?.name ?? ""),
      subtitle: message is TextMessage ? Text(message.text) : Text("Media message"),
    );
  },
)

State Views

CometChatSearch(
  emptyStateView: (context) => Center(child: Text("No results found")),
  errorStateView: (context) => Center(child: Text("Search failed")),
  loadingStateView: (context) => Center(child: CircularProgressIndicator()),
)

Advanced

BLoC Access

The search widget uses SearchBloc internally:
ComponentDescription
SearchBlocSingle consolidated BLoC for all search types
SearchEventEvents: SearchTextChanged, ClearSearch, LoadMoreConversationResults, LoadMoreMessageResults
SearchStateSearch state with conversation and message results

V5 → V6 Migration

V5V6
CometChatSearchControllerSearchBloc
CometChatConversationsSearchControllerMerged into SearchBloc
CometChatMessagesSearchControllerMerged into SearchBloc
SearchUtilsInlined into SearchBloc
3 separate controllers1 unified BLoC

Style

CometChatSearch(
  searchStyle: CometChatSearchStyle(
    backgroundColor: Colors.white,
    searchBoxBackgroundColor: Color(0xFFF5F5F5),
    searchBoxBorderRadius: BorderRadius.circular(12),
  ),
)

Next Steps

Conversations

Browse recent conversations

Message List

Display messages in a conversation

Component Styling

Detailed styling reference

Users

Browse available users