Events allow for a decoupled, flexible architecture where different parts of the application can interact without having to directly reference each other. This makes it easier to create complex, interactive experiences, as well as to extend and customize the functionality provided by the CometChat UI Kit.Both Components and Composite Components have the ability to emit events. These events are dispatched in response to certain changes or user interactions within the component. By emitting events, these components allow other parts of the application to react to changes or interactions, thus enabling dynamic and interactive behavior within the application.
CometChatUserEvents emit events when the logged-in user executes actions on another user. This class provides methods to add and remove listeners for user events, as well as methods to handle specific user actions such as blocking and unblocking users.Available Events:
ccUserBlocked: Triggered when the logged-in user blocks another user.
ccUserUnblocked: Triggered when the logged-in user unblocks another user.
CometChatGroupEvents Emits events when the logged-in user performs actions related to groups. This class provides methods to listen to various group-related events and handle them accordingly.Available Events:
ccGroupCreated: Triggered when the logged-in user creates a group.
ccGroupDeleted: Triggered when the logged-in user deletes a group.
ccGroupLeft: Triggered when the logged-in user leaves a group.
ccGroupMemberScopeChanged: Triggered when the logged-in user changes the scope of another group member.
ccGroupMemberBanned: Triggered when the logged-in user bans a group member from the group.
ccGroupMemberKicked: Triggered when the logged-in user kicks another group member from the group.
ccGroupMemberUnbanned: Triggered when the logged-in user unbans a user banned from the group.
ccGroupMemberJoined: Triggered when the logged-in user joins a group.
ccGroupMemberAdded: Triggered when the logged-in user adds new members to the group.
ccOwnershipChanged: Triggered when the logged-in user transfers the ownership of their group to some other member.
Dart
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart' as sdk;import 'package:flutter/material.dart';class GroupEventsExample extends StatefulWidget { const GroupEventsExample({super.key}); @override State<GroupEventsExample> createState() => _GroupEventsExampleState();}class _GroupEventsExampleState extends State<GroupEventsExample> with CometChatGroupEventListener { String listenerID = "unique_listener_ID"; @override void initState() { super.initState(); CometChatGroupEvents.addGroupsListener(listenerID, this); // Add the listener } @override void dispose() { super.dispose(); CometChatGroupEvents.removeGroupsListener(listenerID); // Remove the listener } @override void ccGroupCreated(Group group) { // TODO("Not yet implemented") } @override void ccGroupDeleted(Group group) { // TODO("Not yet implemented") } @override void ccGroupLeft(sdk.Action message, User leftUser, Group leftGroup) { // TODO("Not yet implemented") } @override void ccGroupMemberScopeChanged(sdk.Action message, User updatedUser, String scopeChangedTo, String scopeChangedFrom, Group group) { // TODO("Not yet implemented") } @override void ccGroupMemberBanned(sdk.Action message, User bannedUser, User bannedBy, Group bannedFrom) { // TODO("Not yet implemented") } @override void ccGroupMemberKicked(sdk.Action message, User kickedUser, User kickedBy, Group kickedFrom) { // TODO("Not yet implemented") } @override void ccGroupMemberUnbanned(sdk.Action message, User unbannedUser, User unbannedBy, Group unbannedFrom) { // TODO("Not yet implemented") } @override void ccGroupMemberJoined(User joinedUser, Group joinedGroup) { // TODO("Not yet implemented") } @override void ccGroupMemberAdded(List<sdk.Action> messages, List<User> usersAdded, Group groupAddedIn, User addedBy) { // TODO("Not yet implemented") } @override void ccOwnershipChanged(Group group, GroupMember newOwner) { // TODO("Not yet implemented") } @override Widget build(BuildContext context) { return const Placeholder(); }}
The CometChatConversationEvents component emits events when the logged-in user performs actions related to conversations. This allows for the UI to be updated accordingly.Available Events:
ccConversationDeleted: Triggered when the logged-in user deletes a conversation.
ccUpdateConversation: Triggered when a conversation is updated (e.g., unread count changes).
CometChatMessageEvents emits events when various actions are performed on messages within the application. These events facilitate updating the UI accordingly.Available Events:
ccMessageSent: Triggered whenever a logged-in user sends any message. It can have two states: inProgress and sent.
ccMessageEdited: Triggered whenever a logged-in user edits any message from the list of messages. It can have two states: inProgress and sent.
ccMessageDeleted: Triggered whenever a logged-in user deletes any message from the list of messages.
ccMessageRead: Triggered whenever a logged-in user reads any message.
ccLiveReaction: Triggered whenever a logged-in user clicks on a live reaction.
ccMessageForwarded: Triggered whenever a logged-in user forwards any message to a list of users or groups. It can have a state of status.
onTextMessageReceived: Triggered when a text message is received.
onMediaMessageReceived: Triggered when a media message is received.
onCustomMessageReceived: Triggered when a custom message is received.
onTypingStarted: Triggered when a typing indicator starts.
onTypingEnded: Triggered when a typing indicator ends.
onMessagesDelivered: Triggered when messages are delivered.
onMessagesRead: Triggered when messages are read.
onMessageEdited: Triggered when a message is edited.
onMessageDeleted: Triggered when a message is deleted.
onTransientMessageReceived: Triggered when a transient message is received.
onFormMessageReceived: Triggered when a form message is received.
onCardMessageReceived: Triggered when a card message is received.
onCustomInteractiveMessageReceived: Triggered when a custom interactive message is received.
onInteractionGoalCompleted: Triggered when an interaction goal is completed.
onSchedulerMessageReceived: Triggered when a scheduler message is received.
onMessageReactionAdded: Triggered when a reaction is added to a message.
onMessageReactionRemoved: Triggered when a reaction is removed from a message.
ccReplyToMessage: Triggered when the logged-in user replies to a message.
onMessagesDeliveredToAll: Triggered when messages are delivered to all recipients.
onMessagesReadByAll: Triggered when messages are read by all recipients.
onMessageModerated: Triggered when a message is moderated.
onAIAssistantMessageReceived: Triggered when an AI Assistant message is received.
onAIToolResultReceived: Triggered when an AI tool result is received.
onAIToolArgumentsReceived: Triggered when AI tool arguments are received.
CometChatCallEvents emits events related to calls within the application. This class provides methods to listen to call-related events and handle them accordingly.Available Events:
ccOutgoingCall: Triggered when the logged-in user initiates an outgoing call.
ccCallAccepted: Triggered when a call is accepted.
ccCallRejected: Triggered when a call is rejected.
CometChatUIEvents emits events related to UI components within the CometChat UI. This class provides methods to listen to UI-related events and handle them accordingly.Available Events:
showPanel: Triggered to show an additional UI panel with custom elements.
hidePanel: Triggered to hide a previously shown UI panel.
ccActiveChatChanged: Triggered when the active chat changes, providing information about the current message, user, and group.
openChat: Triggered to open a chat with a specific user or group.
ccComposeMessage: Triggered when composing a message with a specific text and status.
onAiFeatureTapped: Triggered when an AI feature is tapped for a specific user or group.