createGroupWithMembers static method
- required Group group,
- required List<
GroupMember> groupMembers, - List<
String> bannedUserIds = const [], - dynamic onSuccess(
- Group group
- dynamic onError(
- CometChatException excep
Creates a group in CometChat along with initial members and returns the created Group.
This method is similar to createGroup but also accepts a list of GroupMember objects
to be added during group creation. Additionally, you can pass a list of user IDs to ban
immediately using bannedUserIds
.
The group
parameter should contain required fields like guid
, name
, and type
.
If the group type is "password"
, a password
must also be provided.
groupMembers
is a list of users to be added to the group with their respective scopes.
bannedUserIds
is an optional list of users to be banned upon creation.
The result is returned via onSuccess
or onError
callbacks,
and the created Group object is returned on success.
Throws a PlatformException if a platform channel error occurs.
Example:
CometChat.createGroupWithMembers(
group: Group(guid: "dev-group", name: "Dev Team", type: GroupType.private),
groupMembers: [
GroupMember(uid: "user1", scope: GroupMemberScope.admin),
GroupMember(uid: "user2", scope: GroupMemberScope.participant),
],
bannedUserIds: ["spammer123"],
onSuccess: (group) => print("Group with members created: ${group.name}"),
onError: (e) => print("Failed: ${e.message}")
);
Implementation
static Future<Group?> createGroupWithMembers({
required Group group,
required List<GroupMember> groupMembers,
List<String> bannedUserIds = const [],
Function(Group group)? onSuccess,
Function(CometChatException excep)? onError,
}) async {
List<Map<String, dynamic>> groupMemberMapList = [];
for (var member in groupMembers) {
groupMemberMapList.add(member.toJson());
}
try {
final result = await channel.invokeMethod('createGroupWithMembers', {
'guid': group.guid,
'name': group.name,
'icon': group.icon,
'description': group.description,
'membersCount': group.membersCount,
'metadata': group.metadata == null || group.metadata!.isEmpty
? null
: json.encode(group.metadata),
'joinedAt': group.joinedAt == null
? null
: group.joinedAt!.millisecondsSinceEpoch,
'hasJoined': group.hasJoined,
'createdAt': group.createdAt == null
? null
: group.createdAt!.millisecondsSinceEpoch,
'owner': group.owner,
'updatedAt': group.updatedAt == null
? null
: group.updatedAt!.millisecondsSinceEpoch,
'tags': group.tags,
'type': group.type,
'scope': group.scope,
'password': group.password,
'groupMembers': groupMemberMapList,
'bannedUserIds': bannedUserIds,
});
final res = Group.fromMap(result);
if (onSuccess != null) onSuccess(res);
return res;
} on PlatformException catch (p) {
_errorCallbackHandler(null, p, null, onError);
} catch (e) {
_errorCallbackHandler(null, null, e, onError);
}
return null;
}