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? actions, void Function()? onHomeTapped, void Function()? onBackTapped}) { return AppBar( leadingWidth: 0, automaticallyImplyLeading: false, surfaceTintColor: Colors.transparent, title: Consumer(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: [ 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 ?? [] ], ); }