You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Dart
		
	
| 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 ?? []
 | |
|     ],
 | |
|   );
 | |
| }
 |