Skip to main content

Join Protected Group

Overview

CometChatJoinProtectedGroup is a Widget used to set up a screen that shows the functionality to join a password protected group, featuring the functionality to join a password-protected group, where users can join a single password-protected group at a time.

Image

The CometChatJoinProtectedGroup widget is composed of the following Base Widgets:

WidgetsDescription
CometChatListBaseCometChatListBase serves as a comprehensive container widget, encompassing essential elements such as a title (navigationBar), search functionality (search-bar), background, and a container to embed a list widget. This design provides a cohesive and intuitive user experience, facilitating seamless navigation and interaction within the widget.

Usage

Integration

CometChatJoinProtectedGroup, as a Composite Widget, offers flexible integration options, allowing it to be launched directly via button clicks or any user-triggered action. Additionally, it seamlessly integrates into tab widget controllers. With join group, users gain access to a wide range of parameters and methods for effortless customization of its user interface.

You can launch CometChatJoinProtectedGroup directly using Navigator.push, or you can define it as a widget within the build method of your State class.

1. Using Navigator to Launch CometChatJoinProtectedGroup
Navigator.push(context, MaterialPageRoute(builder: (context) => CometChatJoinProtectedGroup(group: Group(guid: "", name: "", type: "")))); // A group object is required to launch this widget.
2. Embedding CometChatJoinProtectedGroup as a Widget in the build Method
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
import 'package:flutter/material.dart';

class JoinProtectedGroup extends StatefulWidget {
const JoinProtectedGroup({super.key});


State<JoinProtectedGroup> createState() => _JoinProtectedGroupState();
}

class _JoinProtectedGroupState extends State<JoinProtectedGroup> {


Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""),
) // A group object is required to launch this widget.
)
);
}
}

Actions

1. onJoinTap

The onJoinTap action is activated when you click the join Group button. This returns the join groups.

You can override this action using the following code snippet.

CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""), // A group object is required to launch this widget.
onJoinTap: ({Group? group, String? password}) {
// TODO("Not yet implemented")
},
)

2. onBack

Enhance your application's functionality by leveraging the onBack feature. This capability allows you to customize the behavior associated with navigating back within your app. Utilize the provided code snippet to override default behaviors and tailor the user experience according to your specific requirements.

CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""), // A group object is required to launch this widget.
onBack: () {
// TODO("Not yet implemented")
},
)

3. onError

You can customize this behavior by using the provided code snippet to override the onError and improve error handling.

CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""), // A group object is required to launch this widget.
onError: (e) {
// TODO("Not yet implemented")
},
)

Filters

Filters allow you to customize the data displayed in a list within a Widget. You can filter the list based on your specific criteria, allowing for a more customized. Filters can be applied using RequestBuilders of ChatSDK.

The CometChatJoinProtectedGroup widget does not have any exposed filters.


Events

Events are emitted by a Widget. By using event you can extend existing functionality. Being global events, they can be applied in Multiple Locations and are capable of being Added or Removed.

Events emitted by the Join Group widget is as follows.

EventDescription
ccGroupMemberJoinedTriggers when the user joined a protected group successfully

Example

your_screen.dart
import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart'; 
import 'package:cometchat_sdk/models/action.dart' as cc;
import 'package:flutter/material.dart';

class YourScreen extends StatefulWidget {
const YourScreen({super.key});


State<YourScreen> createState() => _YourScreenState();
}

class _YourScreenState extends State<YourScreen> with CometChatGroupEventListener {


void initState() {
super.initState();
CometChatGroupEvents.addGroupsListener("listenerId", this); // Add the listener
}


void dispose(){
super.dispose();
CometChatGroupEvents.removeGroupsListener("listenerId"); // Remove the listener
}


void ccGroupMemberJoined(User joinedUser, Group joinedGroup) {
// TODO("Not yet implemented")
}


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

}

Customization

To fit your app's design requirements, you can customize the appearance of the Groups widget. We provide exposed methods that allow you to modify the experience and behavior according to your specific needs.

Style

Using Style you can customize the look and feel of the widget in your app, These parameters typically control elements such as the color, size, shape, and fonts used within the widget.

1. JoinProtectedGroup Style report

You can set the JoinProtectedGroupStyle to the CometChatJoinProtectedGroup Widget to customize the styling.

CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""), // A group object is required to launch this widget.
joinProtectedGroupStyle: JoinProtectedGroupStyle(
background: Color(0xFFE4EBF5),
titleStyle: TextStyle(color: Colors.red)
),
)
Image

List of properties exposed by JoinProtectedGroupStyle

PropertyDescriptionCode
BackgroundBackground valuebackground: Color?
BorderBorder valueborder: Border?
Border RadiusBorder Radius valueborderRadius: BorderRadius?
Border WidthBorder Width valueborder: Border?
Close Icon TintClose Icon Tint valuecloseIconTint: Color?
Description Text StyleDescription Text Style valuedescriptionTextStyle: TextStyle?
Error Text StyleError Text Style valueerrorTextStyle: TextStyle?
GradientGradient valuegradient: Gradient?
HeightHeight valueheight: double?
Input Border ColorInput Border Color valueinputBorderColor: Color?
Join Icon TintJoin Icon Tint valuejoinIconTint: Color?
Password Input Text StylePassword Input Text Style valuepasswordInputTextStyle: TextStyle?
Password Placeholder StylePassword Placeholder Style valuepasswordPlaceholderStyle: TextStyle?
Title StyleTitle Style valuetitleStyle: TextStyle?
WidthWidth valuewidth: double?

Functionality

These are a set of small functional customizations that allow you to fine-tune the overall experience of the widget. With these, you can change text, set custom icons, and toggle the visibility of UI elements.

Image
CometChatJoinProtectedGroup(
group: Group(guid: "", name: "", type: ""), // A group object is required to launch this widget.
title: "Your Title",
passwordPlaceholderText: "Password Placeholder Text",
closeIcon: Icon(Icons.close_fullscreen_sharp, color: Color(0xFF6851D6))
)
Image

This table provides a quick overview of the available customization options for the CometChatJoinProtectedGroup class.

PropertyDescriptionCode
Border WidthSets the width of the border.borderWidth: double?
Close IconReplaces the default back button with a custom widget.closeIcon: Widget?
DescriptionSets the description text displayed below the title.description: String?
Error State TextSets the text displayed when an error occurs.errorStateText: String?
Join IconReplaces the default join icon with a custom widget.joinIcon: Widget?
Password Placeholder TextSets the placeholder text for the password input field.passwordPlaceholderText: String?
TitleSets the title text displayed at the top of the widget.title: String?

Advanced

For advanced-level customization, you can set custom widgets to the widget. This lets you tailor each aspect of the widget to fit your exact needs and application aesthetics. You can create and define your own widgets and then incorporate those into the widget.

The CometChatJoinProtectedGroup widget does not provide additional functionalities beyond this level of customization.