Skip to main content
{
  "component": "CometChatGroupMembers",
  "package": "cometchat_chat_uikit",
  "import": "import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';",
  "description": "Displays all members of a group in a searchable, scrollable list with member scope badges and management actions.",
  "primaryOutput": {
    "prop": "onItemTap",
    "type": "Function(GroupMember groupMember)?"
  },
  "props": {
    "data": {
      "group": {
        "type": "Group",
        "default": "required",
        "note": "The group object to fetch members from"
      },
      "groupMembersRequestBuilder": {
        "type": "GroupMembersRequestBuilder?",
        "default": "null",
        "note": "Custom request builder for filtering members"
      },
      "groupMembersProtocol": {
        "type": "GroupMembersBuilderProtocol?",
        "default": "null",
        "note": "Custom protocol for fetching group members"
      },
      "searchKeyword": {
        "type": "String?",
        "default": "null",
        "note": "Pre-fills search and filters list"
      },
      "controllerTag": {
        "type": "String?",
        "default": "null",
        "note": "Tag for controller management"
      }
    },
    "callbacks": {
      "onItemTap": "Function(GroupMember groupMember)?",
      "onItemLongPress": "Function(GroupMember groupMember)?",
      "onSelection": "Function(List<GroupMember>?)?",
      "onBack": "VoidCallback?",
      "onError": "OnError?",
      "onLoad": "OnLoad<GroupMember>?",
      "onEmpty": "OnEmpty?",
      "stateCallBack": "Function(CometChatGroupMembersController controller)?"
    },
    "visibility": {
      "showBackButton": { "type": "bool", "default": true },
      "hideSearch": { "type": "bool", "default": false },
      "hideSeparator": { "type": "bool?", "default": null },
      "hideError": { "type": "bool?", "default": null },
      "hideAppbar": { "type": "bool?", "default": null },
      "usersStatusVisibility": { "type": "bool?", "default": true },
      "hideKickMemberOption": { "type": "bool?", "default": null },
      "hideBanMemberOption": { "type": "bool?", "default": null },
      "hideScopeChangeOption": { "type": "bool?", "default": null }
    },
    "selection": {
      "selectionMode": {
        "type": "SelectionMode?",
        "values": ["SelectionMode.single", "SelectionMode.multiple", "SelectionMode.none"],
        "default": "null"
      },
      "activateSelection": {
        "type": "ActivateSelection?",
        "values": ["ActivateSelection.onClick", "ActivateSelection.onLongClick"],
        "default": "null"
      }
    },
    "viewSlots": {
      "listItemView": "Widget Function(GroupMember)?",
      "leadingView": "Widget? Function(BuildContext, GroupMember)?",
      "titleView": "Widget? Function(BuildContext, GroupMember)?",
      "subtitleView": "Widget? Function(BuildContext, GroupMember)?",
      "trailingView": "Function(BuildContext, GroupMember)?",
      "loadingStateView": "WidgetBuilder?",
      "emptyStateView": "WidgetBuilder?",
      "errorStateView": "WidgetBuilder?",
      "setOptions": "List<CometChatOption>? Function(Group, GroupMember, CometChatGroupMembersController, BuildContext)?",
      "addOptions": "List<CometChatOption>? Function(Group, GroupMember, CometChatGroupMembersController, BuildContext)?",
      "appBarOptions": "List<Widget>?"
    },
    "icons": {
      "backButton": { "type": "Widget?", "default": "built-in back arrow" },
      "searchBoxIcon": { "type": "Widget?", "default": "built-in search icon" },
      "submitIcon": { "type": "Widget?", "default": "built-in check icon" },
      "selectIcon": { "type": "Widget?", "default": "built-in selection icon" }
    },
    "formatting": {
      "searchPlaceholder": { "type": "String?", "default": "null" },
      "height": { "type": "double?", "default": "null" },
      "width": { "type": "double?", "default": "null" }
    },
    "style": {
      "style": { "type": "CometChatGroupMembersStyle?", "default": "null" }
    }
  },
  "events": [
    { "name": "CometChatGroupEvents.ccGroupMemberScopeChanged", "payload": "Action, GroupMember, String newScope, String oldScope, Group", "description": "Member scope changed" },
    { "name": "CometChatGroupEvents.ccGroupMemberBanned", "payload": "Action, GroupMember, User bannedBy, Group", "description": "Member banned from group" },
    { "name": "CometChatGroupEvents.ccGroupMemberKicked", "payload": "Action, GroupMember, User kickedBy, Group", "description": "Member kicked from group" }
  ],
  "sdkListeners": [
    "onGroupMemberScopeChanged",
    "onGroupMemberKicked",
    "onGroupMemberLeft",
    "onGroupMemberBanned",
    "onGroupMemberJoined",
    "onMemberAddedToGroup",
    "onUserOnline",
    "onUserOffline"
  ],
  "compositionExample": {
    "description": "Group member list wired to group details or member actions",
    "components": [
      "CometChatGroupMembers",
      "CometChatGroups",
      "CometChatMessages"
    ],
    "flow": "CometChatGroups emits Group -> pass to CometChatGroupMembers -> onItemTap emits GroupMember for actions"
  },
  "types": {
    "GroupMember": {
      "uid": "String",
      "name": "String",
      "avatar": "String?",
      "scope": "String (owner/admin/moderator/participant)",
      "joinedAt": "DateTime?"
    },
    "CometChatOption": {
      "id": "String?",
      "title": "String?",
      "icon": "String?",
      "iconWidget": "Widget?",
      "onClick": "VoidCallback?"
    },
    "SelectionMode": {
      "single": "SelectionMode.single",
      "multiple": "SelectionMode.multiple",
      "none": "SelectionMode.none"
    }
  }
}

Where It Fits

CometChatGroupMembers displays all members of a group with their roles (owner, admin, moderator, participant). It provides member management actions like kick, ban, and scope change. Wire it to CometChatGroups to show members when a group is selected.
import 'package:flutter/material.dart';
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';

class GroupMembersScreen extends StatelessWidget {
  final Group group;

  const GroupMembersScreen({super.key, required this.group});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: CometChatGroupMembers(
          group: group,
          onItemTap: (groupMember) {
            // Handle member tap - show profile or actions
            print("Tapped: ${groupMember.name}");
          },
        ),
      ),
    );
  }
}
The CometChatGroupMembers widget is composed of the following BaseWidgets:
WidgetsDescription
CometChatListBaseContainer widget with title, search functionality, and background settings
CometChatListItemRenders member information with title, subtitle, leading, and trailing widgets

Minimal Render

import 'package:flutter/material.dart';
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';

class GroupMembersDemo extends StatelessWidget {
  final Group group;

  const GroupMembersDemo({super.key, required this.group});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: CometChatGroupMembers(
          group: group,
        ),
      ),
    );
  }
}
You can also launch it using Navigator.push:
Navigator.push(
  context, 
  MaterialPageRoute(
    builder: (context) => CometChatGroupMembers(
      group: Group(guid: "group_id", name: "Group Name", type: GroupTypeConstants.public),
    ),
  ),
);

Filtering Group Members

Pass a GroupMembersRequestBuilder to groupMembersRequestBuilder. Pass the builder instance — not the result of .build().
CometChatGroupMembers(
  group: group,
  groupMembersRequestBuilder: GroupMembersRequestBuilder(group.guid)
    ..limit = 10,
)

Filter Recipes

RecipeCode
Limit to 10 per pageGroupMembersRequestBuilder(guid)..limit = 10
Search by keywordGroupMembersRequestBuilder(guid)..searchKeyword = "john"
Filter by scopesGroupMembersRequestBuilder(guid)..scopes = ["admin", "moderator"]
Default page size is 30. The component uses infinite scroll — the next page loads as the user scrolls to the bottom.

GroupMembersRequestBuilder Properties

PropertyDescriptionCode
guidGroup ID (required)GroupMembersRequestBuilder("group_id")
limitNumber of members to fetch per request..limit = 30
searchKeywordSearch members by name..searchKeyword = "John"
scopesFilter by member scopes..scopes = ["admin"]
build()Builds and returns a GroupMembersRequest object.build()

Custom Protocol Builder

Use GroupMembersBuilderProtocol to customize both the initial list and search results:
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';

class CustomProtocolBuilder extends GroupMembersBuilderProtocol {
  const CustomProtocolBuilder(super.builder);

  @override
  GroupMembersRequest getRequest() {
    return requestBuilder.build();
  }

  @override
  GroupMembersRequest getSearchRequest(String val) {
    requestBuilder.searchKeyword = val;
    return requestBuilder.build();
  }
}

// Usage
CometChatGroupMembers(
  group: group,
  groupMembersProtocol: CustomProtocolBuilder(
    GroupMembersRequestBuilder(group.guid)..scopes = ["admin", "moderator"],
  ),
)

Actions and Events

Callback Props

onItemTap

Fires when a member row is tapped. Use for showing member profile or custom actions.
CometChatGroupMembers(
  group: group,
  onItemTap: (groupMember) {
    print("Selected: ${groupMember.name}");
  },
)

onItemLongPress

Fires when a member row is long-pressed. Useful for showing context menus.
CometChatGroupMembers(
  group: group,
  onItemLongPress: (groupMember) {
    // Show custom context menu
  },
)

onSelection

Fires when members are selected in multi-select mode. Requires selectionMode to be set.
CometChatGroupMembers(
  group: group,
  selectionMode: SelectionMode.multiple,
  activateSelection: ActivateSelection.onClick,
  onSelection: (selectedList) {
    print("Selected ${selectedList?.length ?? 0} members");
  },
)

onError

Fires on internal errors (network failure, auth issue, SDK exception).
CometChatGroupMembers(
  group: group,
  onError: (error) {
    print("CometChatGroupMembers error: $error");
  },
)

onBack

Fires when the back button is pressed.
CometChatGroupMembers(
  group: group,
  showBackButton: true,
  onBack: () {
    Navigator.pop(context);
  },
)

onLoad

Fires when the member list is successfully loaded.
CometChatGroupMembers(
  group: group,
  onLoad: (list) {
    print("Loaded ${list.length} members");
  },
)

onEmpty

Fires when the member list is empty.
CometChatGroupMembers(
  group: group,
  onEmpty: () {
    print("No members found");
  },
)

Global UI Events

CometChatGroupEvents emits events subscribable from anywhere in the application. Add a listener in initState and remove it in dispose.
EventFires whenPayload
ccGroupMemberScopeChangedA member’s scope is changedAction, User, String scopeChangedTo, String scopeChangedFrom, Group
ccGroupMemberBannedA member is bannedAction, User, User bannedBy, Group
ccGroupMemberKickedA member is kickedAction, User, User kickedBy, Group
When to use: sync external UI with member changes. For example, update a member count badge when a member is kicked.
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
import 'package:cometchat_sdk/models/action.dart' as cc;

class _YourScreenState extends State<YourScreen> with CometChatGroupEventListener {

  @override
  void initState() {
    super.initState();
    CometChatGroupEvents.addGroupsListener("listenerId", this);
  }

  @override
  void dispose() {
    CometChatGroupEvents.removeGroupsListener("listenerId");
    super.dispose();
  }

  @override
  void ccGroupMemberScopeChanged(cc.Action message, User updatedUser, String scopeChangedTo, String scopeChangedFrom, Group group) {
    print("${updatedUser.name} scope changed to $scopeChangedTo");
  }

  @override
  void ccGroupMemberBanned(cc.Action message, User bannedUser, User bannedBy, Group bannedFrom) {
    print("${bannedUser.name} was banned from ${bannedFrom.name}");
  }

  @override
  void ccGroupMemberKicked(cc.Action message, User kickedUser, User kickedBy, Group kickedFrom) {
    print("${kickedUser.name} was kicked from ${kickedFrom.name}");
  }

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

SDK Events (Real-Time, Automatic)

The component listens to these SDK events internally. No manual attachment needed unless additional side effects are required.
SDK ListenerInternal behavior
onGroupMemberScopeChangedUpdates member scope badge
onGroupMemberKickedRemoves member from list
onGroupMemberLeftRemoves member from list
onGroupMemberBannedRemoves member from list
onGroupMemberJoinedAdds new member to list
onMemberAddedToGroupAdds new member to list
onUserOnlineUpdates online status indicator
onUserOfflineUpdates offline status indicator

Custom View Slots

Each slot replaces a section of the default UI. Slots that accept a member parameter receive the GroupMember object for that row.
SlotSignatureReplaces
listItemViewWidget Function(GroupMember)Entire list item row
leadingViewWidget? Function(BuildContext, GroupMember)Avatar / left section
titleViewWidget? Function(BuildContext, GroupMember)Member name
subtitleViewWidget? Function(BuildContext, GroupMember)Secondary text
trailingViewFunction(BuildContext, GroupMember)Scope badge / right section
loadingStateViewWidgetBuilderLoading spinner
emptyStateViewWidgetBuilderEmpty state
errorStateViewWidgetBuilderError state
setOptionsList<CometChatOption>? Function(Group, GroupMember, Controller, BuildContext)Context menu actions (replaces default)
addOptionsList<CometChatOption>? Function(Group, GroupMember, Controller, BuildContext)Context menu actions (adds to default)
appBarOptionsList<Widget>App bar action widgets

listItemView

Replace the entire list item row.
CometChatGroupMembers(
  group: group,
  listItemView: (groupMember) {
    return ListTile(
      leading: CometChatAvatar(
        image: groupMember.avatar,
        name: groupMember.name,
      ),
      title: Text(groupMember.name ?? ''),
      subtitle: Text(groupMember.scope ?? 'participant'),
      trailing: Icon(Icons.chevron_right),
    );
  },
)

leadingView

Replace the avatar / left section. Online status indicator example.
CometChatGroupMembers(
  group: group,
  leadingView: (context, groupMember) {
    return Stack(
      children: [
        CometChatAvatar(
          image: groupMember.avatar,
          name: groupMember.name,
          style: CometChatAvatarStyle(borderRadius: BorderRadius.circular(20)),
        ),
        Positioned(
          bottom: 0,
          right: 0,
          child: Container(
            width: 12,
            height: 12,
            decoration: BoxDecoration(
              color: groupMember.status == "online" ? Color(0xFF09C26F) : Colors.grey,
              shape: BoxShape.circle,
              border: Border.all(color: Colors.white, width: 2),
            ),
          ),
        ),
      ],
    );
  },
)

titleView

Replace the member name. Role badge inline example.
CometChatGroupMembers(
  group: group,
  titleView: (context, groupMember) {
    return Row(
      children: [
        Text(
          groupMember.name ?? '',
          style: TextStyle(fontWeight: FontWeight.w500, fontSize: 16),
        ),
        if (groupMember.scope == GroupMemberScope.owner) ...[
          SizedBox(width: 4),
          Icon(Icons.star, size: 16, color: Color(0xFFF76808)),
        ],
      ],
    );
  },
)

subtitleView

Replace the secondary text. Join date example.
CometChatGroupMembers(
  group: group,
  subtitleView: (context, groupMember) {
    final dateTime = groupMember.joinedAt ?? DateTime.now();
    return Text(
      "Joined ${DateFormat('dd/MM/yyyy').format(dateTime)}",
      style: TextStyle(color: Color(0xFF727272), fontSize: 14),
    );
  },
)

trailingView

Replace the scope badge / right section. Custom scope badge example.
CometChatGroupMembers(
  group: group,
  trailingView: (context, groupMember) {
    Color backgroundColor = Color(0xFFEDEAFA);
    Color textColor = Color(0xFF6852D6);
    String scope = groupMember.scope ?? GroupMemberScope.participant;

    if (groupMember.uid == group.owner) {
      scope = GroupMemberScope.owner;
      backgroundColor = Color(0xFF6852D6);
      textColor = Colors.white;
    }

    return Container(
      padding: EdgeInsets.symmetric(horizontal: 12, vertical: 4),
      decoration: BoxDecoration(
        color: backgroundColor,
        borderRadius: BorderRadius.circular(1000),
      ),
      child: Text(
        scope.capitalizeFirst ?? "",
        style: TextStyle(color: textColor, fontSize: 12, fontWeight: FontWeight.w400),
      ),
    );
  },
)

setOptions

Replace the context menu / long-press actions on each member item.
CometChatGroupMembers(
  group: group,
  setOptions: (group, groupMember, controller, context) {
    return [
      CometChatOption(
        id: "view_profile",
        title: "View Profile",
        iconWidget: Icon(Icons.person_outline),
        onClick: () {
          // Navigate to member profile
        },
      ),
      CometChatOption(
        id: "message",
        title: "Send Message",
        iconWidget: Icon(Icons.message_outlined),
        onClick: () {
          // Start direct message
        },
      ),
    ];
  },
)

addOptions

Add to the existing context menu actions without removing defaults.
CometChatGroupMembers(
  group: group,
  addOptions: (group, groupMember, controller, context) {
    return [
      CometChatOption(
        id: "report",
        title: "Report User",
        iconWidget: Icon(Icons.flag_outlined),
        onClick: () {
          // Report user logic
        },
      ),
    ];
  },
)

appBarOptions

Add custom widgets to the app bar.
CometChatGroupMembers(
  group: group,
  appBarOptions: [
    IconButton(
      onPressed: () {
        // Navigate to add members
      },
      icon: Icon(Icons.person_add_alt_1, color: Color(0xFF6852D6)),
    ),
  ],
)

loadingStateView

Custom view displayed while members are being fetched.
CometChatGroupMembers(
  group: group,
  loadingStateView: (context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          CircularProgressIndicator(),
          SizedBox(height: 16),
          Text("Loading members..."),
        ],
      ),
    );
  },
)

emptyStateView

Custom view displayed when no members are found.
CometChatGroupMembers(
  group: group,
  emptyStateView: (context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Icon(Icons.people_outline, size: 64, color: Color(0xFF727272)),
          SizedBox(height: 16),
          Text("No members found"),
        ],
      ),
    );
  },
)

errorStateView

Custom view displayed when an error occurs.
CometChatGroupMembers(
  group: group,
  errorStateView: (context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Icon(Icons.error_outline, size: 64, color: Colors.red),
          SizedBox(height: 16),
          Text("Failed to load members"),
          ElevatedButton(
            onPressed: () {
              // Retry logic
            },
            child: Text("Retry"),
          ),
        ],
      ),
    );
  },
)

Styling

Set CometChatGroupMembersStyle to customize the appearance.
CometChatGroupMembers(
  group: group,
  style: CometChatGroupMembersStyle(
    titleStyle: TextStyle(color: Color(0xFFF76808)),
    separatorColor: Color(0xFFF76808),
    ownerMemberScopeBackgroundColor: Color(0xFFF76808),
    adminMemberScopeBackgroundColor: Color(0xFFFEEDE1),
    adminMemberScopeBorder: Border.all(color: Color(0xFFF76808)),
    adminMemberScopeTextColor: Color(0xFFF76808),
    moderatorMemberScopeBackgroundColor: Color(0xFFFEEDE1),
    moderatorMemberScopeTextColor: Color(0xFFF76808),
    backIconColor: Color(0xFFF76808),
  ),
)

Style Properties

PropertyTypeDescription
backgroundColorColor?Background color of the component
borderBoxBorder?Border for the widget
borderRadiusBorderRadiusGeometry?Border radius for the widget
titleStyleTextStyle?Style for the header title
backIconColorColor?Back button icon color
searchBackgroundColor?Background color of search box
searchBorderRadiusBorderRadius?Border radius for search box
searchTextStyleTextStyle?Style for search input text
searchPlaceholderStyleTextStyle?Style for search placeholder
searchIconColorColor?Search icon color
loadingIconColorColor?Loading indicator color
emptyStateTextStyleTextStyle?Style for empty state title
emptyStateTextColorColor?Color for empty state title text
emptyStateSubtitleTextStyleTextStyle?Style for empty state subtitle
emptyStateSubtitleTextColorColor?Color for empty state subtitle text
errorStateTextStyleTextStyle?Style for error state title
errorStateSubtitleStyleTextStyle?Style for error state subtitle
onlineStatusColorColor?Online status indicator color
separatorColorColor?Color of list item separators
separatorHeightdouble?Height of list item separators
listPaddingEdgeInsetsGeometry?Padding for the list
ownerMemberScopeBackgroundColorColor?Background color for owner scope badge
ownerMemberScopeTextColorColor?Text color for owner scope badge
ownerMemberScopeBorderBoxBorder?Border for owner scope badge
ownerMemberScopeTextStyleTextStyle?Text style for owner scope badge
adminMemberScopeBackgroundColorColor?Background color for admin scope badge
adminMemberScopeTextColorColor?Text color for admin scope badge
adminMemberScopeBorderBoxBorder?Border for admin scope badge
adminMemberScopeTextStyleTextStyle?Text style for admin scope badge
moderatorMemberScopeBackgroundColorColor?Background color for moderator scope badge
moderatorMemberScopeTextColorColor?Text color for moderator scope badge
moderatorMemberScopeBorderBoxBorder?Border for moderator scope badge
moderatorMemberScopeTextStyleTextStyle?Text style for moderator scope badge
checkboxCheckedBackgroundColorColor?Background color for checked checkbox
checkboxBackgroundColorColor?Background color for unchecked checkbox
checkboxSelectedIconColorColor?Color for checkbox icon when selected
checkboxBorderBorderSide?Border for checkbox
checkboxBorderRadiusBorderRadiusGeometry?Border radius for checkbox
listItemSelectedBackgroundColorColor?Background color for selected list item
submitIconColorColor?Color for submit icon
retryButtonBackgroundColorColor?Background color for retry button
retryButtonTextColorColor?Text color for retry button
retryButtonTextStyleTextStyle?Text style for retry button
retryButtonBorderBorderSide?Border for retry button
retryButtonBorderRadiusBorderRadiusGeometry?Border radius for retry button
avatarStyleCometChatAvatarStyle?Style for member avatars
statusIndicatorStyleCometChatStatusIndicatorStyle?Style for status indicators
listItemStyleListItemStyle?Style for list items
confirmDialogStyleCometChatConfirmDialogStyle?Style for confirmation dialogs
changeScopeStyleCometChatChangeScopeStyle?Style for change scope dialog
optionsBackgroundColorColor?Background color for options menu
optionsIconColorColor?Color for options icon
optionsTextStyleTextStyle?Text style for options

Common Patterns

Hide member management options

CometChatGroupMembers(
  group: group,
  hideKickMemberOption: true,
  hideBanMemberOption: true,
  hideScopeChangeOption: true,
)

Multi-select with selection callback

CometChatGroupMembers(
  group: group,
  selectionMode: SelectionMode.multiple,
  activateSelection: ActivateSelection.onClick,
  onSelection: (selectedMembers) {
    if (selectedMembers != null && selectedMembers.isNotEmpty) {
      print("Selected ${selectedMembers.length} members");
      // Perform batch action on selected members
    }
  },
)

Hide all chrome — minimal list

CometChatGroupMembers(
  group: group,
  hideSearch: true,
  hideAppbar: true,
  hideSeparator: true,
)

Filter admins and moderators only

CometChatGroupMembers(
  group: group,
  groupMembersRequestBuilder: GroupMembersRequestBuilder(group.guid)
    ..scopes = [GroupMemberScope.admin, GroupMemberScope.moderator],
)

Props Reference

PropTypeDefaultDescription
groupGrouprequiredThe group object to fetch members from
groupMembersProtocolGroupMembersBuilderProtocol?nullCustom request builder protocol
groupMembersRequestBuilderGroupMembersRequestBuilder?nullCustom request builder for filtering members
searchKeywordString?nullPre-fills search and filters list
controllerTagString?nullTag for controller management
onSelectionFunction(List<GroupMember>?)?nullCallback when members are selected
onItemTapFunction(GroupMember)?nullCallback on tapping a member item
onItemLongPressFunction(GroupMember)?nullCallback on long pressing a member item
onBackVoidCallback?nullCallback on closing this screen
onErrorOnError?nullCallback in case any error occurs
onLoadOnLoad<GroupMember>?nullCallback when list is fetched and loaded
onEmptyOnEmpty?nullCallback when the list is empty
stateCallBackFunction(CometChatGroupMembersController)?nullAccess controller functions from parent
showBackButtonbooltrueShow/hide back button
hideSearchboolfalseShow/hide search input
hideSeparatorbool?nullToggle visibility of separator
hideErrorbool?nullToggle visibility of error dialog
hideAppbarbool?nullHides the appbar
usersStatusVisibilitybool?trueHide status indicator on avatar
hideKickMemberOptionbool?nullHide kick member option
hideBanMemberOptionbool?nullHide ban member option
hideScopeChangeOptionbool?nullHide scope change option
selectionModeSelectionMode?nullSelection mode (single/multiple/none)
activateSelectionActivateSelection?nullWhen to activate selection
subtitleViewWidget? Function(BuildContext, GroupMember)?nullCustom subtitle for each member
listItemViewWidget Function(GroupMember)?nullCustom view for each member
trailingViewFunction(BuildContext, GroupMember)?nullCustom trailing widget
leadingViewWidget? Function(BuildContext, GroupMember)?nullCustom leading view
titleViewWidget? Function(BuildContext, GroupMember)?nullCustom title view
loadingStateViewWidgetBuilder?nullView for loading state
emptyStateViewWidgetBuilder?nullView for empty state
errorStateViewWidgetBuilder?nullView for error state
backButtonWidget?nullCustom back button widget
searchBoxIconWidget?nullCustom search icon
selectIconWidget?nullCustom selection icon
submitIconWidget?nullCustom selection complete icon
appBarOptionsList<Widget>?nullApp bar options
optionsList<CometChatOption>? Function(...)?nullOptions visible at slide of each member
setOptionsList<CometChatOption>? Function(...)?nullReplace default long press actions
addOptionsList<CometChatOption>? Function(...)?nullAdd to default long press actions
searchPlaceholderString?nullPlaceholder text of search input
heightdouble?nullHeight of the widget
widthdouble?nullWidth of the widget
styleCometChatGroupMembersStyle?nullStyle for the component
controllerScrollController?nullScroll controller for the list