|  |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | import 'package:flutter_svg/flutter_svg.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/classes/colors.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/config/routes.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/extensions/int_extensions.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/extensions/string_extensions.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; | 
					
						
							|  |  |  | import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; | 
					
						
							|  |  |  | import 'package:provider/provider.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | AppBar ChatAppBarWidget(BuildContext context, | 
					
						
							|  |  |  |     {required String title, bool showHomeButton = true, ChatUser? chatUser, bool showTyping = false, List<Widget>? actions, void Function()? onHomeTapped, void Function()? onBackTapped}) { | 
					
						
							|  |  |  |   return AppBar( | 
					
						
							|  |  |  |     leadingWidth: 0, | 
					
						
							|  |  |  |     automaticallyImplyLeading: false, | 
					
						
							|  |  |  |     surfaceTintColor: Colors.transparent, | 
					
						
							|  |  |  |     title: Consumer<ChatProviderModel>(builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { | 
					
						
							|  |  |  |       return Row( | 
					
						
							|  |  |  |         children: [ | 
					
						
							|  |  |  |           GestureDetector( | 
					
						
							|  |  |  |             behavior: HitTestBehavior.opaque, | 
					
						
							|  |  |  |             onTap: Feedback.wrapForTap(() { | 
					
						
							|  |  |  |               (onBackTapped == null ? Navigator.maybePop(context) : onBackTapped()); | 
					
						
							|  |  |  |             }, context), | 
					
						
							|  |  |  |             child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |           4.width, | 
					
						
							|  |  |  |           if (chatUser != null) | 
					
						
							|  |  |  |             Stack( | 
					
						
							|  |  |  |               children: <Widget>[ | 
					
						
							|  |  |  |                 if (chatUser.isImageLoading!) | 
					
						
							|  |  |  |                   const SizedBox( | 
					
						
							|  |  |  |                     height: 48, | 
					
						
							|  |  |  |                     width: 48, | 
					
						
							|  |  |  |                   ).toShimmer().circle(30), | 
					
						
							|  |  |  |                 if (!chatUser.isImageLoading! && chatUser.userLocalDownlaodedImage == null) | 
					
						
							|  |  |  |                   SvgPicture.asset( | 
					
						
							|  |  |  |                     "assets/images/user.svg", | 
					
						
							|  |  |  |                     height: 48, | 
					
						
							|  |  |  |                     width: 48, | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                 if (!chatUser.isImageLoading! && chatUser.userLocalDownlaodedImage != null) | 
					
						
							|  |  |  |                   Container( | 
					
						
							|  |  |  |                     width: 48.0, | 
					
						
							|  |  |  |                     height: 48.0, | 
					
						
							|  |  |  |                     decoration: BoxDecoration( | 
					
						
							|  |  |  |                       shape: BoxShape.circle, | 
					
						
							|  |  |  |                       image: DecorationImage( | 
					
						
							|  |  |  |                         fit: BoxFit.cover, | 
					
						
							|  |  |  |                         image: FileImage(chatUser.userLocalDownlaodedImage!), | 
					
						
							|  |  |  |                       ), | 
					
						
							|  |  |  |                     ), | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                 Positioned( | 
					
						
							|  |  |  |                   right: 5, | 
					
						
							|  |  |  |                   bottom: 1, | 
					
						
							|  |  |  |                   child: Container( | 
					
						
							|  |  |  |                     width: 10, | 
					
						
							|  |  |  |                     height: 10, | 
					
						
							|  |  |  |                     decoration: BoxDecoration( | 
					
						
							|  |  |  |                       color: chatUser.userStatus == 1 ? MyColors.green2DColor : Colors.red, | 
					
						
							|  |  |  |                     ), | 
					
						
							|  |  |  |                   ).circle(10), | 
					
						
							|  |  |  |                 ) | 
					
						
							|  |  |  |               ], | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           if (chatUser != null) 14.width, | 
					
						
							|  |  |  |           SizedBox( | 
					
						
							|  |  |  |             height: 40, | 
					
						
							|  |  |  |             child: Column( | 
					
						
							|  |  |  |               crossAxisAlignment: CrossAxisAlignment.start, | 
					
						
							|  |  |  |               mainAxisAlignment: MainAxisAlignment.start, | 
					
						
							|  |  |  |               children: [ | 
					
						
							|  |  |  |                 title.toText20(color: MyColors.darkTextColor, isBold: true).expanded, | 
					
						
							|  |  |  |                 if (showTyping) | 
					
						
							|  |  |  |                   if (chatUser!.isTyping!) ("Typing ...").toText10(color: MyColors.textMixColor) else const SizedBox(), | 
					
						
							|  |  |  |               ], | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           ).expanded | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |     }), | 
					
						
							|  |  |  |     centerTitle: false, | 
					
						
							|  |  |  |     elevation: 0, | 
					
						
							|  |  |  |     backgroundColor: Colors.white, | 
					
						
							|  |  |  |     actions: [ | 
					
						
							|  |  |  |       if (showHomeButton) | 
					
						
							|  |  |  |         IconButton( | 
					
						
							|  |  |  |           onPressed: () { | 
					
						
							|  |  |  |             onHomeTapped == null ? Navigator.popUntil(context, ModalRoute.withName(AppRoutes.dashboard)) : onHomeTapped(); | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           icon: const Icon(Icons.home, color: MyColors.darkIconColor), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |       ...actions ?? [] | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | } |