proxibuy_bussiness/lib/presentation/widgets/custom_app_bar.dart

170 lines
7.5 KiB
Dart

// 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<HomeBloc, HomeState>(
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);
}