group chat started
parent
b227f11c7b
commit
9cb71b525e
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
viewBox="0 0 392.601 392.601" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M117.659,132.85c-29.479,0-53.463,23.984-53.463,53.463s23.984,53.463,53.463,53.463
|
||||||
|
c29.543,0,53.463-23.984,53.463-53.463S147.138,132.85,117.659,132.85z M117.659,217.989c-17.455,0-31.677-14.222-31.677-31.677
|
||||||
|
s14.222-31.677,31.677-31.677s31.677,14.222,31.677,31.677S135.114,217.989,117.659,217.989z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M301.32,192.842c-23.531,0-42.731,19.2-42.731,42.731c0,23.596,19.135,42.731,42.731,42.731
|
||||||
|
c23.596,0,42.731-19.135,42.731-42.731C344.051,211.977,324.916,192.842,301.32,192.842z M301.32,256.518
|
||||||
|
c-11.507,0-20.945-9.374-20.945-20.945s9.438-20.945,20.945-20.945c11.572,0,20.945,9.374,20.945,20.945
|
||||||
|
C322.265,247.08,312.891,256.518,301.32,256.518z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M301.32,292.591c-32.194,0-60.832,17.325-76.994,43.119c-18.554-40.792-59.604-69.495-106.731-69.495
|
||||||
|
c-63.547,0-116.234,51.717-117.592,115.2c-0.065,2.909,1.099,5.818,3.103,7.887c2.069,2.069,4.848,3.232,7.822,3.232h370.166
|
||||||
|
c2.909,0,5.689-1.164,7.822-3.232c2.133-2.069,3.168-4.978,3.103-7.887C390.984,332.478,350.257,292.591,301.32,292.591z
|
||||||
|
M22.758,370.813c6.465-46.545,46.998-82.683,94.901-82.683c47.903,0,88.372,36.137,94.901,82.683H22.758z M233.57,370.813
|
||||||
|
c6.012-31.935,34.327-56.307,67.685-56.307s61.737,24.436,67.685,56.307H233.57z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M274.427,0.066c-65.164,0-118.174,36.913-118.174,82.36c0,22.109,12.541,43.184,34.844,58.505v44.865
|
||||||
|
c0,3.685,1.875,7.111,4.913,9.115c2.78,1.875,7.24,2.069,10.343,0.84l70.4-31.095c64.065-0.776,115.846-37.43,115.846-82.23
|
||||||
|
C392.601,36.979,339.59,0.066,274.427,0.066z M274.427,142.87c-1.552,0-3.038,0.323-4.396,0.905l-57.212,25.277v-34.069
|
||||||
|
c0-3.814-2.004-7.37-5.236-9.244c-18.747-11.507-29.608-27.281-29.608-43.378c0.065-32.776,44.218-60.509,96.452-60.509
|
||||||
|
s96.388,27.733,96.388,60.509C370.815,115.201,326.661,142.87,274.427,142.87z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M219.671,69.238h-5.107c-6.012,0-10.925,4.849-10.925,10.925c0.065,6.077,4.913,10.925,10.925,10.925h5.107
|
||||||
|
c6.012,0,10.925-4.849,10.925-10.925C230.597,74.151,225.748,69.238,219.671,69.238z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M276.948,69.238h-5.107c-6.012,0-10.925,4.849-10.925,10.925c0,6.077,4.978,10.925,10.925,10.925h5.107
|
||||||
|
c6.012,0,10.925-4.849,10.925-10.925C287.873,74.151,283.025,69.238,276.948,69.238z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M334.289,69.238h-5.107c-6.012,0-10.925,4.849-10.925,10.925c0,6.077,4.913,10.925,10.925,10.925h5.107
|
||||||
|
c6.012,0,10.925-4.849,10.925-10.925C345.215,74.151,340.366,69.238,334.289,69.238z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
@ -0,0 +1,260 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
class GetUserGroups {
|
||||||
|
List<Response>? response;
|
||||||
|
Null? errorResponses;
|
||||||
|
|
||||||
|
GetUserGroups({this.response, this.errorResponses});
|
||||||
|
factory GetUserGroups.fromRawJson(String str) => GetUserGroups.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String toRawJson() => json.encode(toJson());
|
||||||
|
GetUserGroups.fromJson(Map<String, dynamic> json) {
|
||||||
|
if (json['response'] != null) {
|
||||||
|
response = <Response>[];
|
||||||
|
json['response'].forEach((v) {
|
||||||
|
response!.add(new Response.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
errorResponses = json['errorResponses'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
if (this.response != null) {
|
||||||
|
data['response'] = this.response!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
data['errorResponses'] = this.errorResponses;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Response {
|
||||||
|
int? groupId;
|
||||||
|
String? groupName;
|
||||||
|
Null? groupIcon;
|
||||||
|
bool? isDeleted;
|
||||||
|
bool? isAdmin;
|
||||||
|
bool? canVideoC;
|
||||||
|
bool? canAudioC;
|
||||||
|
bool? canShareS;
|
||||||
|
bool? canAttach;
|
||||||
|
bool? canArchive;
|
||||||
|
bool? isMeeting;
|
||||||
|
Null? meetingTime;
|
||||||
|
Null? extUserLink;
|
||||||
|
int? callStatus;
|
||||||
|
int? groupUnreadMessageCount;
|
||||||
|
AdminUser? adminUser;
|
||||||
|
List<GroupUserList>? groupUserList;
|
||||||
|
|
||||||
|
Response(
|
||||||
|
{this.groupId,
|
||||||
|
this.groupName,
|
||||||
|
this.groupIcon,
|
||||||
|
this.isDeleted,
|
||||||
|
this.isAdmin,
|
||||||
|
this.canVideoC,
|
||||||
|
this.canAudioC,
|
||||||
|
this.canShareS,
|
||||||
|
this.canAttach,
|
||||||
|
this.canArchive,
|
||||||
|
this.isMeeting,
|
||||||
|
this.meetingTime,
|
||||||
|
this.extUserLink,
|
||||||
|
this.callStatus,
|
||||||
|
this.groupUnreadMessageCount,
|
||||||
|
this.adminUser,
|
||||||
|
this.groupUserList});
|
||||||
|
|
||||||
|
Response.fromJson(Map<String, dynamic> json) {
|
||||||
|
groupId = json['groupId'];
|
||||||
|
groupName = json['groupName'];
|
||||||
|
groupIcon = json['groupIcon'];
|
||||||
|
isDeleted = json['isDeleted'];
|
||||||
|
isAdmin = json['isAdmin'];
|
||||||
|
canVideoC = json['canVideoC'];
|
||||||
|
canAudioC = json['canAudioC'];
|
||||||
|
canShareS = json['canShareS'];
|
||||||
|
canAttach = json['canAttach'];
|
||||||
|
canArchive = json['canArchive'];
|
||||||
|
isMeeting = json['isMeeting'];
|
||||||
|
meetingTime = json['meetingTime'];
|
||||||
|
extUserLink = json['extUserLink'];
|
||||||
|
callStatus = json['callStatus'];
|
||||||
|
groupUnreadMessageCount = json['groupUnreadMessageCount'];
|
||||||
|
adminUser = json['adminUser'] != null
|
||||||
|
? new AdminUser.fromJson(json['adminUser'])
|
||||||
|
: null;
|
||||||
|
if (json['groupUserList'] != null) {
|
||||||
|
groupUserList = <GroupUserList>[];
|
||||||
|
json['groupUserList'].forEach((v) {
|
||||||
|
groupUserList!.add(new GroupUserList.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['groupId'] = this.groupId;
|
||||||
|
data['groupName'] = this.groupName;
|
||||||
|
data['groupIcon'] = this.groupIcon;
|
||||||
|
data['isDeleted'] = this.isDeleted;
|
||||||
|
data['isAdmin'] = this.isAdmin;
|
||||||
|
data['canVideoC'] = this.canVideoC;
|
||||||
|
data['canAudioC'] = this.canAudioC;
|
||||||
|
data['canShareS'] = this.canShareS;
|
||||||
|
data['canAttach'] = this.canAttach;
|
||||||
|
data['canArchive'] = this.canArchive;
|
||||||
|
data['isMeeting'] = this.isMeeting;
|
||||||
|
data['meetingTime'] = this.meetingTime;
|
||||||
|
data['extUserLink'] = this.extUserLink;
|
||||||
|
data['callStatus'] = this.callStatus;
|
||||||
|
data['groupUnreadMessageCount'] = this.groupUnreadMessageCount;
|
||||||
|
if (this.adminUser != null) {
|
||||||
|
data['adminUser'] = this.adminUser!.toJson();
|
||||||
|
}
|
||||||
|
if (this.groupUserList != null) {
|
||||||
|
data['groupUserList'] =
|
||||||
|
this.groupUserList!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class AdminUser {
|
||||||
|
int? id;
|
||||||
|
String? userName;
|
||||||
|
String? email;
|
||||||
|
Null? phone;
|
||||||
|
String? title;
|
||||||
|
int? userStatus;
|
||||||
|
Null? image;
|
||||||
|
int? unreadMessageCount;
|
||||||
|
Null? userAction;
|
||||||
|
bool? isPin;
|
||||||
|
bool? isFav;
|
||||||
|
bool? isAdmin;
|
||||||
|
Null? rKey;
|
||||||
|
int? totalCount;
|
||||||
|
|
||||||
|
AdminUser(
|
||||||
|
{this.id,
|
||||||
|
this.userName,
|
||||||
|
this.email,
|
||||||
|
this.phone,
|
||||||
|
this.title,
|
||||||
|
this.userStatus,
|
||||||
|
this.image,
|
||||||
|
this.unreadMessageCount,
|
||||||
|
this.userAction,
|
||||||
|
this.isPin,
|
||||||
|
this.isFav,
|
||||||
|
this.isAdmin,
|
||||||
|
this.rKey,
|
||||||
|
this.totalCount});
|
||||||
|
|
||||||
|
AdminUser.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
userName = json['userName'];
|
||||||
|
email = json['email'];
|
||||||
|
phone = json['phone'];
|
||||||
|
title = json['title'];
|
||||||
|
userStatus = json['userStatus'];
|
||||||
|
image = json['image'];
|
||||||
|
unreadMessageCount = json['unreadMessageCount'];
|
||||||
|
userAction = json['userAction'];
|
||||||
|
isPin = json['isPin'];
|
||||||
|
isFav = json['isFav'];
|
||||||
|
isAdmin = json['isAdmin'];
|
||||||
|
rKey = json['rKey'];
|
||||||
|
totalCount = json['totalCount'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['userName'] = this.userName;
|
||||||
|
data['email'] = this.email;
|
||||||
|
data['phone'] = this.phone;
|
||||||
|
data['title'] = this.title;
|
||||||
|
data['userStatus'] = this.userStatus;
|
||||||
|
data['image'] = this.image;
|
||||||
|
data['unreadMessageCount'] = this.unreadMessageCount;
|
||||||
|
data['userAction'] = this.userAction;
|
||||||
|
data['isPin'] = this.isPin;
|
||||||
|
data['isFav'] = this.isFav;
|
||||||
|
data['isAdmin'] = this.isAdmin;
|
||||||
|
data['rKey'] = this.rKey;
|
||||||
|
data['totalCount'] = this.totalCount;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class GroupUserList {
|
||||||
|
int? id;
|
||||||
|
String? userName;
|
||||||
|
String? email;
|
||||||
|
Null? phone;
|
||||||
|
String? title;
|
||||||
|
int? userStatus;
|
||||||
|
Null? image;
|
||||||
|
int? unreadMessageCount;
|
||||||
|
int? userAction;
|
||||||
|
bool? isPin;
|
||||||
|
bool? isFav;
|
||||||
|
bool? isAdmin;
|
||||||
|
Null? rKey;
|
||||||
|
int? totalCount;
|
||||||
|
|
||||||
|
GroupUserList(
|
||||||
|
{this.id,
|
||||||
|
this.userName,
|
||||||
|
this.email,
|
||||||
|
this.phone,
|
||||||
|
this.title,
|
||||||
|
this.userStatus,
|
||||||
|
this.image,
|
||||||
|
this.unreadMessageCount,
|
||||||
|
this.userAction,
|
||||||
|
this.isPin,
|
||||||
|
this.isFav,
|
||||||
|
this.isAdmin,
|
||||||
|
this.rKey,
|
||||||
|
this.totalCount});
|
||||||
|
|
||||||
|
GroupUserList.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
userName = json['userName'];
|
||||||
|
email = json['email'];
|
||||||
|
phone = json['phone'];
|
||||||
|
title = json['title'];
|
||||||
|
userStatus = json['userStatus'];
|
||||||
|
image = json['image'];
|
||||||
|
unreadMessageCount = json['unreadMessageCount'];
|
||||||
|
userAction = json['userAction'];
|
||||||
|
isPin = json['isPin'];
|
||||||
|
isFav = json['isFav'];
|
||||||
|
isAdmin = json['isAdmin'];
|
||||||
|
rKey = json['rKey'];
|
||||||
|
totalCount = json['totalCount'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['userName'] = this.userName;
|
||||||
|
data['email'] = this.email;
|
||||||
|
data['phone'] = this.phone;
|
||||||
|
data['title'] = this.title;
|
||||||
|
data['userStatus'] = this.userStatus;
|
||||||
|
data['image'] = this.image;
|
||||||
|
data['unreadMessageCount'] = this.unreadMessageCount;
|
||||||
|
data['userAction'] = this.userAction;
|
||||||
|
data['isPin'] = this.isPin;
|
||||||
|
data['isFav'] = this.isFav;
|
||||||
|
data['isAdmin'] = this.isAdmin;
|
||||||
|
data['rKey'] = this.rKey;
|
||||||
|
data['totalCount'] = this.totalCount;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,182 @@
|
|||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/config/routes.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||||
|
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
||||||
|
|
||||||
|
class GropChatHomeScreen extends StatefulWidget {
|
||||||
|
const GropChatHomeScreen({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<GropChatHomeScreen> createState() => _GropChatHomeScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _GropChatHomeScreenState extends State<GropChatHomeScreen> {
|
||||||
|
TextEditingController search = TextEditingController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
search.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: MyColors.white,
|
||||||
|
body: Consumer<ChatProviderModel>(
|
||||||
|
builder: (BuildContext context, ChatProviderModel m, Widget? child) {
|
||||||
|
return m.isLoading
|
||||||
|
? ChatHomeShimmer(
|
||||||
|
isDetailedScreen: false,
|
||||||
|
)
|
||||||
|
: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
TextField(
|
||||||
|
controller: m.searchGroup,
|
||||||
|
style: const TextStyle(color: MyColors.darkTextColor, fontWeight: FontWeight.w500, fontSize: 12),
|
||||||
|
onChanged: (String val) {
|
||||||
|
m.filter(val);
|
||||||
|
},
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: fieldBorder(radius: 5, color: 0xFFE5E5E5),
|
||||||
|
focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5),
|
||||||
|
enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5),
|
||||||
|
contentPadding: const EdgeInsets.all(11),
|
||||||
|
hintText: LocaleKeys.searchGroup.tr(),
|
||||||
|
hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12),
|
||||||
|
filled: true,
|
||||||
|
fillColor: MyColors.greyF7Color,
|
||||||
|
suffixIconConstraints: const BoxConstraints(),
|
||||||
|
suffixIcon: m.search.text.isNotEmpty
|
||||||
|
? IconButton(
|
||||||
|
constraints: const BoxConstraints(),
|
||||||
|
onPressed: () {
|
||||||
|
m.clearSelections();
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
|
color: MyColors.redA3Color,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
).paddingOnly(top: 20, bottom: 14),
|
||||||
|
if (m.userGroups.response != null)
|
||||||
|
ListView.separated(
|
||||||
|
itemCount: m.userGroups.response!.length,
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const ClampingScrollPhysics(),
|
||||||
|
padding: const EdgeInsets.only(bottom: 80.0),
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return SizedBox(
|
||||||
|
height: 55,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
|
||||||
|
Container(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
width: 48,
|
||||||
|
height: 48,
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(24.0),
|
||||||
|
border: Border.all(width: 1, color: Colors.black),
|
||||||
|
|
||||||
|
),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/chat-group.svg",
|
||||||
|
|
||||||
|
)),
|
||||||
|
Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
(m.userGroups?.response![index].groupName!.toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 16)
|
||||||
|
)!.expanded,
|
||||||
|
])
|
||||||
|
|
||||||
|
],
|
||||||
|
),
|
||||||
|
).onPress(() {
|
||||||
|
Navigator.pushNamed(
|
||||||
|
context,
|
||||||
|
AppRoutes.chatDetailed,
|
||||||
|
arguments: ChatDetailedScreenParams(m.searchedChats![index], false),
|
||||||
|
).then((Object? value) {
|
||||||
|
m.clearSelections();
|
||||||
|
m.notifyListeners();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.black).paddingOnly(left: 59),
|
||||||
|
).expanded,
|
||||||
|
],
|
||||||
|
).paddingOnly(left: 21, right: 21);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
floatingActionButton: FloatingActionButton(
|
||||||
|
child: Container(
|
||||||
|
width: 60,
|
||||||
|
height: 60,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
gradient: LinearGradient(
|
||||||
|
transform: GradientRotation(.46),
|
||||||
|
begin: Alignment.topRight,
|
||||||
|
end: Alignment.bottomLeft,
|
||||||
|
colors: [
|
||||||
|
MyColors.gradiantEndColor,
|
||||||
|
MyColors.gradiantStartColor,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: const Icon(
|
||||||
|
Icons.add,
|
||||||
|
size: 30,
|
||||||
|
color: MyColors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onPressed: () async {
|
||||||
|
print(AppState().chatDetails!.response!.token);
|
||||||
|
showMyBottomSheet(
|
||||||
|
context,
|
||||||
|
callBackFunc: () {},
|
||||||
|
child: SearchEmployeeBottomSheet(
|
||||||
|
title: LocaleKeys.searchForEmployee.tr(),
|
||||||
|
apiMode: LocaleKeys.delegate.tr(),
|
||||||
|
fromChat: true,
|
||||||
|
onSelectEmployee: (_selectedEmployee) {},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
OutlineInputBorder fieldBorder({required double radius, required int color}) {
|
||||||
|
return OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(radius),
|
||||||
|
borderSide: BorderSide(
|
||||||
|
color: Color(color),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue