Build a custom participant list UI that displays real-time participant information with full control over layout and interactions. This guide demonstrates how to hide the default participant list and create your own using participant events and actions.Documentation Index
Fetch the complete documentation index at: https://cometchat-22654f5b-docs-android-v6-beta2.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The SDK provides participant data through events, allowing you to build custom UIs for:- Participant roster with search and filtering
- Custom participant cards with role badges or metadata
- Moderation dashboards with quick access to controls
- Attendance tracking and engagement monitoring
Prerequisites
- CometChat Calls SDK installed and initialized
- Active call session (see Join Session)
- Familiarity with Actions and Events
Step 1: Hide Default Participant List
Configure session settings to hide the default participant list button:Step 2: Create Participant List Widget
Build a Flutter widget for displaying participants. Instead of Android’s RecyclerView and XML layouts, Flutter usesListView and widget composition:
Step 3: Implement Participant Events
Listen for participant updates and handle actions in your call screen:Flutter listeners are not lifecycle-aware. You must manually remove listeners in
dispose() to prevent memory leaks.Complete Example
Here’s the full implementation with all components:Participant Object Reference
Participant Object Reference
| Property | Type | Description |
|---|---|---|
uid | String | Unique identifier (CometChat user ID) |
name | String | Display name |
avatar | String? | URL of avatar image |
pid | String | Participant ID for this call session |
role | String | Role in the call |
isAudioMuted | bool | Whether audio is muted |
isVideoPaused | bool | Whether video is paused |
isPinned | bool | Whether pinned in layout |
isPresenting | bool | Whether screen sharing |
raisedHandTimestamp | int | Timestamp when hand was raised (0 if not raised) |