{"id":"56081163-6c7e-4b2a-82b9-49f53a86f3a1","shortId":"3F69jF","kind":"skill","title":"cometchat-flutter-v5-users-groups","tagline":"Use when working with CometChat Flutter UIKit v5 user and group list components. Triggers on CometChatUsers, CometChatGroups, CometChatGroupMembers, CometChatChangeScope.","description":"# CometChat Flutter UIKit v5 — Users & Groups\n\nComponents for displaying and managing users, groups, and group members.\n\n## CometChatUsers\n\nDisplays a list of users, sorted alphabetically.\n\n### Key Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `usersRequestBuilder` | `UsersRequestBuilder?` | — | Custom fetch builder |\n| `usersStyle` | `CometChatUsersStyle` | `const CometChatUsersStyle()` | Visual styling |\n| `onItemTap` | `Function(BuildContext, User)?` | — | Tap callback (**includes BuildContext**) |\n| `onItemLongPress` | `Function(BuildContext, User)?` | — | Long press callback |\n| `subtitleView` | `Widget? Function(BuildContext, User)?` | — | Custom subtitle |\n| `title` | `String?` | — | List title |\n| `showBackButton` | `bool` | `true` | Show back button |\n| `hideSearch` | `bool` | `false` | Hide search bar |\n| `selectionMode` | `SelectionMode?` | — | Enable selection mode |\n| `onSelection` | `Function(List<User>?, BuildContext)?` | — | Selection callback |\n| `usersStatusVisibility` | `bool?` | `true` | Show online status |\n| `hideAppbar` | `bool?` | `false` | Hide app bar |\n| `appBarOptions` | `List<Widget> Function(BuildContext)?` | — | App bar trailing widgets |\n| `controllerTag` | `String?` | — | Custom GetX controller tag |\n| `stickyHeaderVisibility` | `bool?` | `false` | Show alphabetical headers |\n\n### Usage\n\n```dart\nCometChatUsers(\n  onItemTap: (context, user) {\n    Navigator.push(context, MaterialPageRoute(\n      builder: (_) => MessagesScreen(user: user),\n    ));\n  },\n)\n\n// With custom request builder\nCometChatUsers(\n  usersRequestBuilder: UsersRequestBuilder()\n    ..limit = 30\n    ..friendsOnly = true,\n)\n\n// Filter by role (e.g., AI agents)\nCometChatUsers(\n  title: \"Agents\",\n  usersRequestBuilder: UsersRequestBuilder()\n    ..roles = [AIConstants.aiRole],\n  onItemTap: (context, user) { ... },\n)\n```\n\n## CometChatGroups\n\nDisplays a list of groups with type indicators.\n\n### Key Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `groupsRequestBuilder` | `GroupsRequestBuilder?` | — | Custom fetch builder |\n| `groupsStyle` | `CometChatGroupsStyle?` | — | Visual styling |\n| `onItemTap` | `Function(BuildContext, Group)?` | — | Tap callback (**includes BuildContext**) |\n| `onItemLongPress` | `Function(BuildContext, Group)?` | — | Long press callback |\n| `subtitleView` | `Widget? Function(BuildContext, Group)?` | — | Custom subtitle |\n| `title` | `String?` | — | List title |\n| `showBackButton` | `bool` | `true` | Show back button |\n| `hideSearch` | `bool` | `false` | Hide search bar |\n| `selectionMode` | `SelectionMode?` | — | Enable selection mode |\n| `groupTypeVisibility` | `bool` | `true` | Show group type icon |\n| `hideAppbar` | `bool?` | `false` | Hide app bar |\n| `appBarOptions` | `List<Widget> Function(BuildContext)?` | — | App bar trailing widgets |\n| `controllerTag` | `String?` | — | Custom GetX controller tag |\n\n### Usage\n\n```dart\nCometChatGroups(\n  onItemTap: (context, group) {\n    Navigator.push(context, MaterialPageRoute(\n      builder: (_) => MessagesScreen(group: group),\n    ));\n  },\n)\n```\n\n## CometChatGroupMembers\n\nDisplays members of a specific group with role indicators.\n\n```dart\nCometChatGroupMembers(\n  group: group,\n  onItemTap: (member) {\n    debugPrint('Tapped: ${member.name}, role: ${member.scope}');\n  },\n)\n```\n\nKey props: `group` (required), `groupMembersRequestBuilder`, `groupMembersStyle`, `subtitleView`, `trailingView`, `onItemTap` (`Function(GroupMember)?` — **no BuildContext**), `selectionMode`, `onSelection`.\n\n## CometChatChangeScope\n\nWidget for changing a group member's scope/role.\n\n```dart\nCometChatChangeScope(group: group, member: member)\n```\n\n## Callback Signature Differences\n\n| Component | `onItemTap` signature |\n|-----------|----------------------|\n| `CometChatConversations` | `Function(Conversation)?` — **no BuildContext** |\n| `CometChatUsers` | `Function(BuildContext, User)?` — **has BuildContext** |\n| `CometChatGroups` | `Function(BuildContext, Group)?` — **has BuildContext** |\n| `CometChatGroupMembers` | `Function(GroupMember)?` — **no BuildContext** |\n\nThis is a common source of confusion.\n\n## Anti-Patterns\n\n```dart\n// ❌ WRONG — missing BuildContext in Users/Groups onItemTap\nCometChatUsers(onItemTap: (user) { ... }) // Missing BuildContext!\n\n// ✅ CORRECT\nCometChatUsers(onItemTap: (context, user) { ... })\nCometChatGroups(onItemTap: (context, group) { ... })\n```\n\n## Checklist — Users & Groups\n\n- [ ] `onItemTap` callback signature includes `BuildContext` for Users/Groups\n- [ ] Custom request builders set appropriate limits\n- [ ] Let widgets manage their own GetX controller lifecycle","tags":["cometchat","flutter","users","groups","skills","agent-skills","ai-agent","chat","claude-code","cursor","messaging","nextjs"],"capabilities":["skill","source-cometchat","skill-cometchat-flutter-v5-users-groups","topic-agent-skills","topic-ai-agent","topic-chat","topic-claude-code","topic-cometchat","topic-cursor","topic-messaging","topic-nextjs","topic-react","topic-react-native","topic-ui-kit"],"categories":["cometchat-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cometchat/cometchat-skills/cometchat-flutter-v5-users-groups","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cometchat/cometchat-skills","source_repo":"https://github.com/cometchat/cometchat-skills","install_from":"skills.sh"}},"qualityScore":"0.463","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (4,690 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:50.755Z","embedding":null,"createdAt":"2026-05-07T13:05:10.325Z","updatedAt":"2026-05-18T19:04:50.755Z","lastSeenAt":"2026-05-18T19:04:50.755Z","tsv":"'30':169 'agent':177,180 'ai':176 'aiconstants.airole':184 'alphabet':49,146 'anti':382 'anti-pattern':381 'app':126,132,266,272 'appbaropt':128,268 'appropri':419 'back':97,242 'bar':104,127,133,249,267,273 'bool':94,100,117,123,143,239,245,256,263 'buildcontext':69,74,77,85,113,131,214,219,222,230,271,328,356,359,362,365,368,373,387,395,412 'builder':60,157,164,207,291,417 'button':98,243 'callback':72,81,115,217,226,346,409 'chang':334 'checklist':405 'cometchat':2,11,26 'cometchat-flutter-v5-users-groups':1 'cometchatchangescop':25,331,341 'cometchatconvers':352 'cometchatgroup':23,188,284,363,401 'cometchatgroupmemb':24,295,306,369 'cometchatgroupsstyl':209 'cometchatus':22,42,150,165,178,357,391,397 'cometchatusersstyl':62,64 'common':377 'compon':19,32,349 'confus':380 'const':63 'context':152,155,186,286,289,399,403 'control':140,280,427 'controllertag':136,276 'convers':354 'correct':396 'custom':58,87,138,162,205,232,278,415 'dart':149,283,305,340,384 'debugprint':311 'default':54,201 'descript':55,202 'differ':348 'display':34,43,189,296 'e.g':175 'enabl':107,252 'fals':101,124,144,246,264 'fetch':59,206 'filter':172 'flutter':3,12,27 'friendson':170 'function':68,76,84,111,130,213,221,229,270,325,353,358,364,370 'getx':139,279,426 'group':6,17,31,38,40,193,215,223,231,259,287,293,294,301,307,308,318,336,342,343,366,404,407 'groupmemb':326,371 'groupmembersrequestbuild':320 'groupmembersstyl':321 'groupsrequestbuild':203,204 'groupsstyl':208 'grouptypevis':255 'header':147 'hide':102,125,247,265 'hideappbar':122,262 'hidesearch':99,244 'icon':261 'includ':73,218,411 'indic':196,304 'key':50,197,316 'let':421 'lifecycl':428 'limit':168,420 'list':18,45,91,112,129,191,236,269 'long':79,224 'manag':36,423 'materialpagerout':156,290 'member':41,297,310,337,344,345 'member.name':313 'member.scope':315 'messagesscreen':158,292 'miss':386,394 'mode':109,254 'navigator.push':154,288 'onitemlongpress':75,220 'onitemtap':67,151,185,212,285,309,324,350,390,392,398,402,408 'onlin':120 'onselect':110,330 'pattern':383 'press':80,225 'prop':51,52,198,199,317 'request':163,416 'requir':319 'role':174,183,303,314 'scope/role':339 'search':103,248 'select':108,114,253 'selectionmod':105,106,250,251,329 'set':418 'show':96,119,145,241,258 'showbackbutton':93,238 'signatur':347,351,410 'skill' 'skill-cometchat-flutter-v5-users-groups' 'sort':48 'sourc':378 'source-cometchat' 'specif':300 'status':121 'stickyheadervis':142 'string':90,137,235,277 'style':66,211 'subtitl':88,233 'subtitleview':82,227,322 'tag':141,281 'tap':71,216,312 'titl':89,92,179,234,237 'topic-agent-skills' 'topic-ai-agent' 'topic-chat' 'topic-claude-code' 'topic-cometchat' 'topic-cursor' 'topic-messaging' 'topic-nextjs' 'topic-react' 'topic-react-native' 'topic-ui-kit' 'trail':134,274 'trailingview':323 'trigger':20 'true':95,118,171,240,257 'type':53,195,200,260 'uikit':13,28 'usag':148,282 'use':7 'user':5,15,30,37,47,70,78,86,153,159,160,187,360,393,400,406 'users/groups':389,414 'usersrequestbuild':56,57,166,167,181,182 'usersstatusvis':116 'usersstyl':61 'v5':4,14,29 'visual':65,210 'widget':83,135,228,275,332,422 'work':9 'wrong':385","prices":[{"id":"cf04f962-82c6-4f63-bccb-cbc152dfe7f8","listingId":"56081163-6c7e-4b2a-82b9-49f53a86f3a1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cometchat","category":"cometchat-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:05:10.325Z"}],"sources":[{"listingId":"56081163-6c7e-4b2a-82b9-49f53a86f3a1","source":"github","sourceId":"cometchat/cometchat-skills/cometchat-flutter-v5-users-groups","sourceUrl":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-flutter-v5-users-groups","isPrimary":false,"firstSeenAt":"2026-05-07T13:05:10.325Z","lastSeenAt":"2026-05-18T19:04:50.755Z"}],"details":{"listingId":"56081163-6c7e-4b2a-82b9-49f53a86f3a1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cometchat","slug":"cometchat-flutter-v5-users-groups","github":{"repo":"cometchat/cometchat-skills","stars":27,"topics":["agent-skills","ai-agent","chat","claude-code","cometchat","cursor","messaging","nextjs","react","react-native","ui-kit"],"license":null,"html_url":"https://github.com/cometchat/cometchat-skills","pushed_at":"2026-05-18T05:04:24Z","description":"Add CometChat chat to any React, Next.js, React Native, Angular, Android, iOS, or Flutter project through your AI coding agent. Works with Claude Code, Cursor, Codex, VS Code Copilot, Windsurf, Cline, Kiro, and 50+ more agents.","skill_md_sha":"a2e9bc64fbc345632bdc55e78b63cf3d363c7a56","skill_md_path":"skills/cometchat-flutter-v5-users-groups/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-flutter-v5-users-groups"},"layout":"multi","source":"github","category":"cometchat-skills","frontmatter":{"name":"cometchat-flutter-v5-users-groups","license":"MIT","description":"Use when working with CometChat Flutter UIKit v5 user and group list components. Triggers on CometChatUsers, CometChatGroups, CometChatGroupMembers, CometChatChangeScope.","compatibility":"cometchat_chat_uikit ^5.2.14; cometchat_uikit_shared ^5.2.3"},"skills_sh_url":"https://skills.sh/cometchat/cometchat-skills/cometchat-flutter-v5-users-groups"},"updatedAt":"2026-05-18T19:04:50.755Z"}}