// lib/presentation/widgets/custom_app_bar.dart import 'package:business_panel/core/config/app_colors.dart'; import 'package:business_panel/gen/assets.gen.dart'; import 'package:business_panel/presentation/home/bloc/home_bloc.dart'; import 'package:business_panel/presentation/pages/discount_manegment_page.dart'; import 'package:business_panel/presentation/pages/reserve_manegment_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/flutter_svg.dart'; class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { const CustomAppBar({super.key}); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: const BorderRadius.vertical(bottom: Radius.circular(15)), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.08), blurRadius: 10, offset: const Offset(0, 4), ), ], ), child: SafeArea( child: Padding( padding: EdgeInsets.all(8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SvgPicture.asset(Assets.icons.logoWithName), Row( children: [ BlocBuilder( builder: (context, state) { final count = state is HomeLoaded ? state.discounts.length : 0; return Row( children: [ Stack( alignment: Alignment.center, children: [ IconButton( onPressed: () { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const DiscountManegmentPage(), ), ); }, icon: SvgPicture.asset( Assets.icons.discountShape, color: Colors.black, ), ), if (count > 0) Positioned( top: 2, right: 6, child: GestureDetector( onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const DiscountManegmentPage(), ), ); }, child: Container( padding: const EdgeInsets.all(4), decoration: const BoxDecoration( color: Colors.red, shape: BoxShape.circle, ), constraints: const BoxConstraints( minWidth: 16, minHeight: 16, ), child: Padding( padding: const EdgeInsets.all(2.0), child: Text( '$count', style: const TextStyle( color: Colors.white, fontSize: 10, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ), ), ), ), ], ), Stack( alignment: Alignment.center, children: [ IconButton( onPressed: () { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const ReserveManegmment(), ), ); }, icon: SvgPicture.asset(Assets.icons.scanBarcode), ), if (count > 0) Positioned( top: 2, right: 6, child: GestureDetector( onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const ReserveManegmment(), ), ); }, child: Container( padding: const EdgeInsets.all(4), decoration: const BoxDecoration( color: AppColors.selectedImg, shape: BoxShape.circle, ), constraints: const BoxConstraints( minWidth: 16, minHeight: 16, ), child: Padding( padding: const EdgeInsets.all(2.0), child: Text( '$count', style: const TextStyle( color: Colors.white, fontSize: 10, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ), ), ), ), ], ), ], ); }, ), ], ), ], ), ), ), ); } @override Size get preferredSize => const Size.fromHeight(70.0); }