import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; import 'package:syncrow_web/pages/common/buttons/default_button.dart'; import 'package:syncrow_web/pages/common/custom_dialog.dart'; import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; import 'package:syncrow_web/pages/home/bloc/home_state.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/routes_const.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class WebAppBar extends StatefulWidget { final Widget? title; final Widget? centerBody; final Widget? rightBody; const WebAppBar({super.key, this.title, this.centerBody, this.rightBody}); @override State createState() => _WebAppBarState(); } class _WebAppBarState extends State with HelperResponsiveLayout { @override void initState() { super.initState(); } @override Widget build(BuildContext context) { bool isSmallScreen = isSmallScreenSize(context); bool isHalfMediumScreen = isHafMediumScreenSize(context); return BlocBuilder(builder: (context, state) { final user = context.read().user; return Container( height: (isSmallScreen || isHalfMediumScreen) ? 130 : 100, decoration: const BoxDecoration(color: ColorsManager.secondaryColor), padding: const EdgeInsets.all(10), child: isSmallScreen || isHalfMediumScreen ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (widget.title != null) Align( alignment: Alignment.centerLeft, child: widget.title!, ), if (widget.centerBody != null) Padding( padding: const EdgeInsets.only(top: 8.0), child: widget.centerBody, ), if (widget.rightBody != null || user != null) Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (widget.rightBody != null) widget.rightBody!, Row( children: [ const SizedBox.square( dimension: 40, child: CircleAvatar( backgroundColor: Colors.white, child: SizedBox.square( dimension: 35, child: CircleAvatar( backgroundColor: Colors.grey, child: FlutterLogo(), ), ), ), ), const SizedBox( width: 10, ), if (user != null) Text( '${user.firstName} ${user.lastName}', style: Theme.of(context).textTheme.bodyLarge, ), ], ), ], ), ], ) : Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( child: Row( children: [ widget.title!, if (widget.centerBody != null) Padding( padding: const EdgeInsets.only(left: 80), child: widget.centerBody!, ), ], ), ), Row( mainAxisSize: MainAxisSize.min, children: [ if (widget.rightBody != null) Align( alignment: Alignment.centerRight, child: widget.rightBody, ), const SizedBox( width: 10, ), const SizedBox.square( dimension: 40, child: CircleAvatar( backgroundColor: Colors.white, child: SizedBox.square( dimension: 35, child: CircleAvatar( backgroundColor: Colors.grey, child: FlutterLogo(), ), ), ), ), const SizedBox( width: 10, ), if (user != null) Text( '${user.firstName} ${user.lastName}', style: Theme.of(context).textTheme.bodyLarge, ), const SizedBox( width: 10, ), GestureDetector( onTap: () { showCustomDialog( context: context, barrierDismissible: true, title: 'Logout', message: 'Are you sure you want to logout?', actions: [ GestureDetector( onTap: () { AuthBloc.logout(); context.go(RoutesConst.auth); }, child: DefaultButton( child: Text( 'Ok', style: Theme.of(context) .textTheme .bodyMedium! .copyWith(fontSize: 12, color: Colors.white), ), ), ), const SizedBox( height: 10, ), GestureDetector( onTap: () { context.pop(); }, child: DefaultButton( child: Text( 'Cancel', style: Theme.of(context) .textTheme .bodyMedium! .copyWith(fontSize: 12, color: Colors.white), ), ), ), ], ); }, child: const Icon( Icons.logout, color: ColorsManager.whiteColors, ), ) ], ), ], ), ); }); } }