cometchat-flutter-v6-components — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cometchat-flutter-v6-components (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ground truth:catalogs/flutter-v6.json— 296 symbols, compiler-verified against the published 6.1.0, withsymbolsByBarrelrecording which barrel each resolves from. The lists below are that catalog, grouped. If a name is not in the catalog it does not exist — do not emit it. Props come from the docs.mdtwin (../cometchat-flutter-v6-core/references/docs-map.md), never from memory.
cometchat-flutter-v6-core — install, credentials, init→login→render, the two barrels. This skill ASSUMES it and does not repeat it.Choosing, composing, or swapping UI Kit widgets; "which widgets exist"; customizing a list, message, or bubble.
Covered by core. This skill adds no package.
Lists & screens: CometChatConversations · CometChatUsers · CometChatGroups · CometChatGroupMembers · CometChatSearch · CometChatNotificationFeed Messages: CometChatMessageHeader · CometChatMessageList · CometChatMessageComposer · CometChatThreadedHeader · CometChatMessageInformation · CometChatMessagePreview · CometChatReactions · CometChatReactionList · CometChatMediaRecorder · CometChatEmojiKeyboard · CometChatStickerKeyboard Bubbles: CometChatTextBubble · CometChatImageBubble · CometChatVideoBubble · CometChatAudioBubble · CometChatFileBubble · CometChatVoiceNoteBubble · CometChatDeletedBubble · CometChatActionBubble · CometChatMessageBubble · CometChatLinkPreviewBubble · CometChatPollsBubble · CometChatStickerBubble · CometChatCollaborativeBubble · CometChatStreamBubble · CometChatAIAssistantBubble · CometChatCallBubble Groups: CometChatChangeScope · CometChatCreatePoll AI: CometChatAISmartRepliesView · CometChatAIConversationStarterView · CometChatAIConversationSummaryView · CometChatAIAssistantChatHistory · CometChatAIAssistantEvents Theme primitives: CometChatColorPalette · CometChatTypography · CometChatSpacing · CometChatThemeHelper (→ -customization)
`CometChatMediaRecorder` and `CometChatEmojiKeyboard` are REAL in Flutter v6 even though they are phantoms in the React pack. Never carry another family's phantom list here — checkcatalogs/flutter-v6.json. Plural/singular matters:CometChatPollsBubble(notPollBubble),CometChatThreadedHeader(notThreadHeader).CometChatImagesBubble/CometChatAudiosBubble/CometChatFilesBubble/CometChatVideosBubblealso exist as the multi-attachment variants — the singular forms are the standard bubbles. Exception:CometChatAudioBubbleis a deprecated typedef alias forCometChatVoiceNoteBubble(audio_bubble/cometchat_voice_note_bubble.dart) — useCometChatVoiceNoteBubble(single voice note) orCometChatAudiosBubble(multi-attachment) instead; it compiles today but rides a deprecated symbol (AUDIT-233). The message-translation bubble is UN-prefixed (MessageTranslationBubble); only its style class carries the prefix.
CometChatIncomingCall · CometChatOutgoingCall · CometChatOngoingCall · CometChatCallButtons · CometChatCallLogs · CometChatCallBubble · CometChatCalls resolve only from:
import 'package:cometchat_chat_uikit/cometchat_calls_uikit.dart';That barrel does not re-export the chat widgets, so a calls screen imports both. Detail: cometchat-flutter-v6-calls.
listItemView (replace the whole row) plus finer slots — leadingStateView · titleView · subtitleView · trailingView — and state slots loadingStateView / emptyStateView / errorStateView.CometChatConversations.leadingView is (context, conversation), while CometChatMessageHeader.subtitleView is (group, user, context). Fetch the widget's .md twin rather than assuming.onItemTap · onItemLongPress · onSelection · onBack · onError · onLoad. Note the arity differs by widget: CometChatUsers/CometChatGroups take onItemTap: (context, item), while CometChatConversations/CometChatGroupMembers take onItemTap: (item).conversationsRequestBuilder · usersRequestBuilder · groupsRequestBuilder · groupMembersRequestBuilder.There is no per-bubble prop on the list — a custom bubble is a CometChatMessageTemplate whose bubbleView you override. Defaults come from MessageTemplateUtils (v6 replaced the v5 DataSource; CometChatUIKit.getDataSource() is gone).
Which prop you pass it to is NOT interchangeable (message-list § Message Templates; customization-view-slots; customization-datasource):
addTemplate: — merges with the defaults. This is the one for a message type of your own.templates: — replaces the whole default set.Reach for addTemplate: for anything the kit does not already ship, and templates: only when you deliberately want to drop the defaults. Templates are keyed category_type, so an addTemplate: entry matching an existing key overrides just that bubble (customization-datasource).
Do not try to widen the list's fetch with your own builder: message-list states that `uid`, `guid`, `types` and `categories` on a `MessagesRequestBuilder` are always overridden inside the message list.
Overriding a type the kit already ships (templates:):
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
import 'package:flutter/material.dart';
final textTemplate = CometChatMessageTemplate(
type: CometChatMessageType.text,
category: CometChatMessageCategory.message,
bubbleView: (message, context, alignment) =>
message is TextMessage ? Text(message.text) : const SizedBox.shrink(),
);Adding a type of your own (addTemplate:):
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
import 'package:flutter/material.dart';
final diceRollTemplate = CometChatMessageTemplate(
type: 'game_roll', // your own type string
category: CometChatMessageCategory.custom, // CustomMessage is always `custom`
bubbleView: (message, context, alignment) => Text(
message is CustomMessage ? '${message.customData?['value']}' : ''),
);
Widget gameChat(Group group) => CometChatMessageList(
group: group,
addTemplate: [diceRollTemplate], // `templates:` here would render nothing
);v6 ships no create-group widget; build the form yourself and create with the SDK. It MUST offer all three types — Public · Private · Password-protected — with the password field required for the third.
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
Future<void> createGroup(String guid, String name, String? password) async {
final group = Group(
guid: guid, name: name, type: CometChatGroupType.password, password: password);
// NOTE: `group:` is a NAMED parameter, and onSuccess/onError are both required.
await CometChat.createGroup(group: group, onSuccess: (g) {}, onError: (e) {});
}CometChatMessageList.CometChatConversationsWithMessages, CometChatMessages, CometChatUI, CometChatUserList) — all removed; the host composes screens (→ -migration).The widget renders and its data populates. Empty ⇒ confirm init + login completed before the screen built (core's gate), and that any list has a bounded height (Expanded).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.