import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.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/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class WebAppBar extends StatelessWidget with HelperResponsiveLayout { final Widget? title; final Widget? centerBody; final Widget? rightBody; const WebAppBar({super.key, this.title, this.centerBody, this.rightBody}); @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 (title != null) Align( alignment: Alignment.centerLeft, child: title!, ), if (centerBody != null) Padding( padding: const EdgeInsets.only(top: 8.0), child: centerBody, ), if (rightBody != null || user != null) Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (rightBody != null) 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: [ Align( alignment: Alignment.centerLeft, child: Expanded( child: Row( children: [ title!, if (centerBody != null) Padding( padding: const EdgeInsets.only(left: 80), child: centerBody!, ), ], ), ), ), Row( mainAxisSize: MainAxisSize.min, children: [ if (rightBody != null) Align( alignment: Alignment.centerRight, child: 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, ), ], ), ], ), ); }); } }