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.
		
		
		
		
		
			
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.7 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,
 | 
						|
    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 ?? []
 | 
						|
    ],
 | 
						|
  );
 | 
						|
}
 |