|  |  |  | @ -23,6 +23,7 @@ import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:mohem_flutter_app/widgets/shimmer/offers_shimmer_widget.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:provider/provider.dart'; | 
		
	
		
			
				|  |  |  |  | import 'package:pull_to_refresh/pull_to_refresh.dart'; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | class DashboardScreen extends StatefulWidget { | 
		
	
		
			
				|  |  |  |  |   DashboardScreen({Key? key}) : super(key: key); | 
		
	
	
		
			
				
					|  |  |  | @ -37,12 +38,24 @@ class _DashboardScreenState extends State<DashboardScreen> { | 
		
	
		
			
				|  |  |  |  |   late DashboardProviderModel data; | 
		
	
		
			
				|  |  |  |  |   final GlobalKey<ScaffoldState> _scaffoldState = GlobalKey(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   final RefreshController _refreshController = RefreshController(initialRefresh: false); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   int currentIndex = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
		
			
				|  |  |  |  |   void initState() { | 
		
	
		
			
				|  |  |  |  |     super.initState(); | 
		
	
		
			
				|  |  |  |  |     data = Provider.of<DashboardProviderModel>(context, listen: false); | 
		
	
		
			
				|  |  |  |  |     _onRefresh(); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
		
			
				|  |  |  |  |   void dispose() { | 
		
	
		
			
				|  |  |  |  |     super.dispose(); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   void _onRefresh() async { | 
		
	
		
			
				|  |  |  |  |     data.initProvider(); | 
		
	
		
			
				|  |  |  |  |     data.fetchListMenu(); | 
		
	
		
			
				|  |  |  |  |     data.fetchAttendanceTracking(context); | 
		
	
		
			
				|  |  |  |  |     data.fetchWorkListCounter(context); | 
		
	
	
		
			
				
					|  |  |  | @ -50,11 +63,7 @@ class _DashboardScreenState extends State<DashboardScreen> { | 
		
	
		
			
				|  |  |  |  |     data.fetchLeaveTicketBalance(context, DateTime.now()); | 
		
	
		
			
				|  |  |  |  |     data.fetchMenuEntries(); | 
		
	
		
			
				|  |  |  |  |     data.getCategoryOffersListAPI(context); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
		
			
				|  |  |  |  |   void dispose() { | 
		
	
		
			
				|  |  |  |  |     super.dispose(); | 
		
	
		
			
				|  |  |  |  |     _refreshController.refreshCompleted(); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   @override | 
		
	
	
		
			
				
					|  |  |  | @ -122,236 +131,243 @@ class _DashboardScreenState extends State<DashboardScreen> { | 
		
	
		
			
				|  |  |  |  |             ], | 
		
	
		
			
				|  |  |  |  |           ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), | 
		
	
		
			
				|  |  |  |  |           Expanded( | 
		
	
		
			
				|  |  |  |  |             child: SingleChildScrollView( | 
		
	
		
			
				|  |  |  |  |               child: Column( | 
		
	
		
			
				|  |  |  |  |                 children: [ | 
		
	
		
			
				|  |  |  |  |                   Column( | 
		
	
		
			
				|  |  |  |  |                     crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                     children: [ | 
		
	
		
			
				|  |  |  |  |                       LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), | 
		
	
		
			
				|  |  |  |  |                       (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), | 
		
	
		
			
				|  |  |  |  |                       16.height, | 
		
	
		
			
				|  |  |  |  |                       Row( | 
		
	
		
			
				|  |  |  |  |                         children: [ | 
		
	
		
			
				|  |  |  |  |                           Expanded( | 
		
	
		
			
				|  |  |  |  |                             child: AspectRatio( | 
		
	
		
			
				|  |  |  |  |                               aspectRatio: 159 / 159, | 
		
	
		
			
				|  |  |  |  |                               child: Consumer<DashboardProviderModel>( | 
		
	
		
			
				|  |  |  |  |                                 builder: (context, model, child) { | 
		
	
		
			
				|  |  |  |  |                                   return (model.isAttendanceTrackingLoading | 
		
	
		
			
				|  |  |  |  |                                           ? GetAttendanceTrackingShimmer() | 
		
	
		
			
				|  |  |  |  |                                           : Container( | 
		
	
		
			
				|  |  |  |  |                                               decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                                 borderRadius: BorderRadius.circular(15), | 
		
	
		
			
				|  |  |  |  |                                                 gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ | 
		
	
		
			
				|  |  |  |  |                                                   MyColors.gradiantEndColor, | 
		
	
		
			
				|  |  |  |  |                                                   MyColors.gradiantStartColor, | 
		
	
		
			
				|  |  |  |  |                                                 ]), | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                               child: Stack( | 
		
	
		
			
				|  |  |  |  |                                                 alignment: Alignment.center, | 
		
	
		
			
				|  |  |  |  |                                                 children: [ | 
		
	
		
			
				|  |  |  |  |                                                   if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"), | 
		
	
		
			
				|  |  |  |  |                                                   Column( | 
		
	
		
			
				|  |  |  |  |                                                     crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                     children: [ | 
		
	
		
			
				|  |  |  |  |                                                       Expanded( | 
		
	
		
			
				|  |  |  |  |                                                         child: Column( | 
		
	
		
			
				|  |  |  |  |                                                           mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                           crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                           children: [ | 
		
	
		
			
				|  |  |  |  |                                                             LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                             if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                             if (model.isTimeRemainingInSeconds != 0) | 
		
	
		
			
				|  |  |  |  |                                                               Column( | 
		
	
		
			
				|  |  |  |  |                                                                 mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                                 crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                                 children: [ | 
		
	
		
			
				|  |  |  |  |                                                                   9.height, | 
		
	
		
			
				|  |  |  |  |                                                                   CountdownTimer( | 
		
	
		
			
				|  |  |  |  |                                                                     endTime: model.endTime, | 
		
	
		
			
				|  |  |  |  |                                                                     onEnd: null, | 
		
	
		
			
				|  |  |  |  |                                                                     endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                                     textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold), | 
		
	
		
			
				|  |  |  |  |                                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                                   LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                                   9.height, | 
		
	
		
			
				|  |  |  |  |                                                                   ClipRRect( | 
		
	
		
			
				|  |  |  |  |                                                                     borderRadius: BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                                       Radius.circular(20), | 
		
	
		
			
				|  |  |  |  |                                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                                     child: LinearProgressIndicator( | 
		
	
		
			
				|  |  |  |  |                                                                       value: model.progress, | 
		
	
		
			
				|  |  |  |  |                                                                       minHeight: 8, | 
		
	
		
			
				|  |  |  |  |                                                                       valueColor: const AlwaysStoppedAnimation<Color>(Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                                       backgroundColor: const Color(0xff196D73), | 
		
	
		
			
				|  |  |  |  |                                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                                 ], | 
		
	
		
			
				|  |  |  |  |                                                               ), | 
		
	
		
			
				|  |  |  |  |                                                           ], | 
		
	
		
			
				|  |  |  |  |                                                         ).paddingOnly(top: 12, right: 15, left: 12), | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                       Row( | 
		
	
		
			
				|  |  |  |  |             child: SmartRefresher( | 
		
	
		
			
				|  |  |  |  |               enablePullDown: true, | 
		
	
		
			
				|  |  |  |  |               enablePullUp: false, | 
		
	
		
			
				|  |  |  |  |               header: const MaterialClassicHeader(color: MyColors.gradiantEndColor,), | 
		
	
		
			
				|  |  |  |  |               controller: _refreshController, | 
		
	
		
			
				|  |  |  |  |               onRefresh: _onRefresh, | 
		
	
		
			
				|  |  |  |  |               child: SingleChildScrollView( | 
		
	
		
			
				|  |  |  |  |                 child: Column( | 
		
	
		
			
				|  |  |  |  |                   children: [ | 
		
	
		
			
				|  |  |  |  |                     Column( | 
		
	
		
			
				|  |  |  |  |                       crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                       children: [ | 
		
	
		
			
				|  |  |  |  |                         LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), | 
		
	
		
			
				|  |  |  |  |                         (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), | 
		
	
		
			
				|  |  |  |  |                         16.height, | 
		
	
		
			
				|  |  |  |  |                         Row( | 
		
	
		
			
				|  |  |  |  |                           children: [ | 
		
	
		
			
				|  |  |  |  |                             Expanded( | 
		
	
		
			
				|  |  |  |  |                               child: AspectRatio( | 
		
	
		
			
				|  |  |  |  |                                 aspectRatio: 159 / 159, | 
		
	
		
			
				|  |  |  |  |                                 child: Consumer<DashboardProviderModel>( | 
		
	
		
			
				|  |  |  |  |                                   builder: (context, model, child) { | 
		
	
		
			
				|  |  |  |  |                                     return (model.isAttendanceTrackingLoading | 
		
	
		
			
				|  |  |  |  |                                         ? GetAttendanceTrackingShimmer() | 
		
	
		
			
				|  |  |  |  |                                         : Container( | 
		
	
		
			
				|  |  |  |  |                                       decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                         borderRadius: BorderRadius.circular(15), | 
		
	
		
			
				|  |  |  |  |                                         gradient: const LinearGradient(transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ | 
		
	
		
			
				|  |  |  |  |                                           MyColors.gradiantEndColor, | 
		
	
		
			
				|  |  |  |  |                                           MyColors.gradiantStartColor, | 
		
	
		
			
				|  |  |  |  |                                         ]), | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                       child: Stack( | 
		
	
		
			
				|  |  |  |  |                                         alignment: Alignment.center, | 
		
	
		
			
				|  |  |  |  |                                         children: [ | 
		
	
		
			
				|  |  |  |  |                                           if (model.isTimeRemainingInSeconds == 0) SvgPicture.asset("assets/images/thumb.svg"), | 
		
	
		
			
				|  |  |  |  |                                           Column( | 
		
	
		
			
				|  |  |  |  |                                             crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                             children: [ | 
		
	
		
			
				|  |  |  |  |                                               Expanded( | 
		
	
		
			
				|  |  |  |  |                                                 child: Column( | 
		
	
		
			
				|  |  |  |  |                                                   mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                   crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                   children: [ | 
		
	
		
			
				|  |  |  |  |                                                     LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                     if (model.isTimeRemainingInSeconds == 0) "01-02-2022".toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                     if (model.isTimeRemainingInSeconds != 0) | 
		
	
		
			
				|  |  |  |  |                                                       Column( | 
		
	
		
			
				|  |  |  |  |                                                         mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                         crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                         children: [ | 
		
	
		
			
				|  |  |  |  |                                                           Expanded( | 
		
	
		
			
				|  |  |  |  |                                                             child: Column( | 
		
	
		
			
				|  |  |  |  |                                                               mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                               crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                               children: [ | 
		
	
		
			
				|  |  |  |  |                                                                 LocaleKeys.checkIn.tr().toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                                 (model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn) | 
		
	
		
			
				|  |  |  |  |                                                                     .toString() | 
		
	
		
			
				|  |  |  |  |                                                                     .toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                                 4.height, | 
		
	
		
			
				|  |  |  |  |                                                               ], | 
		
	
		
			
				|  |  |  |  |                                                             ).paddingOnly(left: 12), | 
		
	
		
			
				|  |  |  |  |                                                           9.height, | 
		
	
		
			
				|  |  |  |  |                                                           CountdownTimer( | 
		
	
		
			
				|  |  |  |  |                                                             endTime: model.endTime, | 
		
	
		
			
				|  |  |  |  |                                                             onEnd: null, | 
		
	
		
			
				|  |  |  |  |                                                             endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                             textStyle: TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold), | 
		
	
		
			
				|  |  |  |  |                                                           ), | 
		
	
		
			
				|  |  |  |  |                                                           Container( | 
		
	
		
			
				|  |  |  |  |                                                             width: 45, | 
		
	
		
			
				|  |  |  |  |                                                             height: 45, | 
		
	
		
			
				|  |  |  |  |                                                             padding: const EdgeInsets.only(left: 14, right: 14), | 
		
	
		
			
				|  |  |  |  |                                                             decoration: const BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                                               color: Color(0xff259EA4), | 
		
	
		
			
				|  |  |  |  |                                                               borderRadius: BorderRadius.only( | 
		
	
		
			
				|  |  |  |  |                                                                 bottomRight: Radius.circular(15), | 
		
	
		
			
				|  |  |  |  |                                                               ), | 
		
	
		
			
				|  |  |  |  |                                                           LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                           9.height, | 
		
	
		
			
				|  |  |  |  |                                                           ClipRRect( | 
		
	
		
			
				|  |  |  |  |                                                             borderRadius: BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                               Radius.circular(20), | 
		
	
		
			
				|  |  |  |  |                                                             ), | 
		
	
		
			
				|  |  |  |  |                                                             child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"), | 
		
	
		
			
				|  |  |  |  |                                                           ).onPress(() { | 
		
	
		
			
				|  |  |  |  |                                                             showMyBottomSheet(context, child: MarkAttendanceWidget(model)); | 
		
	
		
			
				|  |  |  |  |                                                           }), | 
		
	
		
			
				|  |  |  |  |                                                             child: LinearProgressIndicator( | 
		
	
		
			
				|  |  |  |  |                                                               value: model.progress, | 
		
	
		
			
				|  |  |  |  |                                                               minHeight: 8, | 
		
	
		
			
				|  |  |  |  |                                                               valueColor: const AlwaysStoppedAnimation<Color>(Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                               backgroundColor: const Color(0xff196D73), | 
		
	
		
			
				|  |  |  |  |                                                             ), | 
		
	
		
			
				|  |  |  |  |                                                           ), | 
		
	
		
			
				|  |  |  |  |                                                         ], | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                     ], | 
		
	
		
			
				|  |  |  |  |                                                   ], | 
		
	
		
			
				|  |  |  |  |                                                 ).paddingOnly(top: 12, right: 15, left: 12), | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                               Row( | 
		
	
		
			
				|  |  |  |  |                                                 children: [ | 
		
	
		
			
				|  |  |  |  |                                                   Expanded( | 
		
	
		
			
				|  |  |  |  |                                                     child: Column( | 
		
	
		
			
				|  |  |  |  |                                                       mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                                       crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                                       children: [ | 
		
	
		
			
				|  |  |  |  |                                                         LocaleKeys.checkIn.tr().toText12(color: Colors.white), | 
		
	
		
			
				|  |  |  |  |                                                         (model.attendanceTracking!.pSwipeIn == null ? "--:--" : model.attendanceTracking!.pSwipeIn) | 
		
	
		
			
				|  |  |  |  |                                                             .toString() | 
		
	
		
			
				|  |  |  |  |                                                             .toText14(color: Colors.white, isBold: true), | 
		
	
		
			
				|  |  |  |  |                                                         4.height, | 
		
	
		
			
				|  |  |  |  |                                                       ], | 
		
	
		
			
				|  |  |  |  |                                                     ).paddingOnly(left: 12), | 
		
	
		
			
				|  |  |  |  |                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                   Container( | 
		
	
		
			
				|  |  |  |  |                                                     width: 45, | 
		
	
		
			
				|  |  |  |  |                                                     height: 45, | 
		
	
		
			
				|  |  |  |  |                                                     padding: const EdgeInsets.only(left: 14, right: 14), | 
		
	
		
			
				|  |  |  |  |                                                     decoration: const BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                                       color: Color(0xff259EA4), | 
		
	
		
			
				|  |  |  |  |                                                       borderRadius: BorderRadius.only( | 
		
	
		
			
				|  |  |  |  |                                                         bottomRight: Radius.circular(15), | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"), | 
		
	
		
			
				|  |  |  |  |                                                   ).onPress(() { | 
		
	
		
			
				|  |  |  |  |                                                     showMyBottomSheet(context, child: MarkAttendanceWidget(model)); | 
		
	
		
			
				|  |  |  |  |                                                   }), | 
		
	
		
			
				|  |  |  |  |                                                 ], | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                             ).onPress( | 
		
	
		
			
				|  |  |  |  |                                               () { | 
		
	
		
			
				|  |  |  |  |                                                 Navigator.pushNamed(context, AppRoutes.todayAttendance); | 
		
	
		
			
				|  |  |  |  |                                               }, | 
		
	
		
			
				|  |  |  |  |                                             )) | 
		
	
		
			
				|  |  |  |  |                                       .animatedSwither(); | 
		
	
		
			
				|  |  |  |  |                                 }, | 
		
	
		
			
				|  |  |  |  |                                             ], | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                         ], | 
		
	
		
			
				|  |  |  |  |                                       ), | 
		
	
		
			
				|  |  |  |  |                                     ).onPress( | 
		
	
		
			
				|  |  |  |  |                                           () { | 
		
	
		
			
				|  |  |  |  |                                         Navigator.pushNamed(context, AppRoutes.todayAttendance); | 
		
	
		
			
				|  |  |  |  |                                       }, | 
		
	
		
			
				|  |  |  |  |                                     )) | 
		
	
		
			
				|  |  |  |  |                                         .animatedSwither(); | 
		
	
		
			
				|  |  |  |  |                                   }, | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           9.width, | 
		
	
		
			
				|  |  |  |  |                           Expanded( | 
		
	
		
			
				|  |  |  |  |                             child: MenusWidget(), | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ], | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ], | 
		
	
		
			
				|  |  |  |  |                   ).paddingOnly(left: 21, right: 21, top: 7), | 
		
	
		
			
				|  |  |  |  |                   ServicesWidget(), | 
		
	
		
			
				|  |  |  |  |                   // 8.height, | 
		
	
		
			
				|  |  |  |  |                   Container( | 
		
	
		
			
				|  |  |  |  |                     width: double.infinity, | 
		
	
		
			
				|  |  |  |  |                     padding: const EdgeInsets.only(top: 31), | 
		
	
		
			
				|  |  |  |  |                     decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                       color: Colors.white, | 
		
	
		
			
				|  |  |  |  |                       borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)), | 
		
	
		
			
				|  |  |  |  |                       border: Border.all(color: MyColors.lightGreyEDColor, width: 1), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                     child: Column( | 
		
	
		
			
				|  |  |  |  |                       mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                       children: [ | 
		
	
		
			
				|  |  |  |  |                         Row( | 
		
	
		
			
				|  |  |  |  |                           crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                           children: [ | 
		
	
		
			
				|  |  |  |  |                             9.width, | 
		
	
		
			
				|  |  |  |  |                             Expanded( | 
		
	
		
			
				|  |  |  |  |                               child: Column( | 
		
	
		
			
				|  |  |  |  |                                 crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                 mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                 children: [ | 
		
	
		
			
				|  |  |  |  |                                   LocaleKeys.offers.tr().toText12(), | 
		
	
		
			
				|  |  |  |  |                                   Row( | 
		
	
		
			
				|  |  |  |  |                                     children: [ | 
		
	
		
			
				|  |  |  |  |                                       LocaleKeys.discounts.tr().toText24(isBold: true), | 
		
	
		
			
				|  |  |  |  |                                       6.width, | 
		
	
		
			
				|  |  |  |  |                                       Container( | 
		
	
		
			
				|  |  |  |  |                                           padding: const EdgeInsets.only(left: 8, right: 8), | 
		
	
		
			
				|  |  |  |  |                                           decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                             color: MyColors.yellowColor, | 
		
	
		
			
				|  |  |  |  |                                             borderRadius: BorderRadius.circular(10), | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                           child: LocaleKeys.newString.tr().toText10(isBold: true)), | 
		
	
		
			
				|  |  |  |  |                                     ], | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ], | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                               child: MenusWidget(), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                             LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true).onPress(() { | 
		
	
		
			
				|  |  |  |  |                               Navigator.pushNamed(context, AppRoutes.offersAndDiscounts); | 
		
	
		
			
				|  |  |  |  |                             }) | 
		
	
		
			
				|  |  |  |  |                           ], | 
		
	
		
			
				|  |  |  |  |                         ).paddingOnly(left: 21, right: 21), | 
		
	
		
			
				|  |  |  |  |                         Consumer<DashboardProviderModel>( | 
		
	
		
			
				|  |  |  |  |                           builder: (context, model, child) { | 
		
	
		
			
				|  |  |  |  |                             return SizedBox( | 
		
	
		
			
				|  |  |  |  |                               height: 103 + 33, | 
		
	
		
			
				|  |  |  |  |                               child: ListView.separated( | 
		
	
		
			
				|  |  |  |  |                                   shrinkWrap: true, | 
		
	
		
			
				|  |  |  |  |                                   physics: const BouncingScrollPhysics(), | 
		
	
		
			
				|  |  |  |  |                                   padding: const EdgeInsets.only(left: 21, right: 21, top: 13), | 
		
	
		
			
				|  |  |  |  |                                   scrollDirection: Axis.horizontal, | 
		
	
		
			
				|  |  |  |  |                                   itemBuilder: (cxt, index) { | 
		
	
		
			
				|  |  |  |  |                                     return model.isOffersLoading | 
		
	
		
			
				|  |  |  |  |                                         ? const OffersShimmerWidget() | 
		
	
		
			
				|  |  |  |  |                                         : InkWell( | 
		
	
		
			
				|  |  |  |  |                                             onTap: () { | 
		
	
		
			
				|  |  |  |  |                                               navigateToDetails(data.getOffersList[index]); | 
		
	
		
			
				|  |  |  |  |                                             }, | 
		
	
		
			
				|  |  |  |  |                                             child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                                               width: 73, | 
		
	
		
			
				|  |  |  |  |                                               child: Column( | 
		
	
		
			
				|  |  |  |  |                                                 crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                                 children: [ | 
		
	
		
			
				|  |  |  |  |                                                   Container( | 
		
	
		
			
				|  |  |  |  |                                                     width: 73, | 
		
	
		
			
				|  |  |  |  |                                                     height: 73, | 
		
	
		
			
				|  |  |  |  |                                                     decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                                       borderRadius: const BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                         Radius.circular(100), | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                       border: Border.all(color: MyColors.lightGreyE3Color, width: 1), | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                     child: ClipRRect( | 
		
	
		
			
				|  |  |  |  |                                                       borderRadius: const BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                         Radius.circular(50), | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                       child: Hero( | 
		
	
		
			
				|  |  |  |  |                                                         tag: "ItemImage" + data.getOffersList[index].rowID!, | 
		
	
		
			
				|  |  |  |  |                                                         transitionOnUserGestures: true, | 
		
	
		
			
				|  |  |  |  |                                                         child: Image.network( | 
		
	
		
			
				|  |  |  |  |                                                           data.getOffersList[index].bannerImage!, | 
		
	
		
			
				|  |  |  |  |                                                           fit: BoxFit.contain, | 
		
	
		
			
				|  |  |  |  |                                                         ), | 
		
	
		
			
				|  |  |  |  |                                                       ), | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ], | 
		
	
		
			
				|  |  |  |  |                     ).paddingOnly(left: 21, right: 21, top: 7), | 
		
	
		
			
				|  |  |  |  |                     ServicesWidget(), | 
		
	
		
			
				|  |  |  |  |                     // 8.height, | 
		
	
		
			
				|  |  |  |  |                     Container( | 
		
	
		
			
				|  |  |  |  |                       width: double.infinity, | 
		
	
		
			
				|  |  |  |  |                       padding: const EdgeInsets.only(top: 31), | 
		
	
		
			
				|  |  |  |  |                       decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                         color: Colors.white, | 
		
	
		
			
				|  |  |  |  |                         borderRadius: const BorderRadius.only(topRight: Radius.circular(50), topLeft: Radius.circular(50)), | 
		
	
		
			
				|  |  |  |  |                         border: Border.all(color: MyColors.lightGreyEDColor, width: 1), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                       child: Column( | 
		
	
		
			
				|  |  |  |  |                         mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                         children: [ | 
		
	
		
			
				|  |  |  |  |                           Row( | 
		
	
		
			
				|  |  |  |  |                             crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                             children: [ | 
		
	
		
			
				|  |  |  |  |                               Expanded( | 
		
	
		
			
				|  |  |  |  |                                 child: Column( | 
		
	
		
			
				|  |  |  |  |                                   crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                                   mainAxisSize: MainAxisSize.min, | 
		
	
		
			
				|  |  |  |  |                                   children: [ | 
		
	
		
			
				|  |  |  |  |                                     LocaleKeys.offers.tr().toText12(), | 
		
	
		
			
				|  |  |  |  |                                     Row( | 
		
	
		
			
				|  |  |  |  |                                       children: [ | 
		
	
		
			
				|  |  |  |  |                                         LocaleKeys.discounts.tr().toText24(isBold: true), | 
		
	
		
			
				|  |  |  |  |                                         6.width, | 
		
	
		
			
				|  |  |  |  |                                         Container( | 
		
	
		
			
				|  |  |  |  |                                             padding: const EdgeInsets.only(left: 8, right: 8), | 
		
	
		
			
				|  |  |  |  |                                             decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                               color: MyColors.yellowColor, | 
		
	
		
			
				|  |  |  |  |                                               borderRadius: BorderRadius.circular(10), | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                             child: LocaleKeys.newString.tr().toText10(isBold: true)), | 
		
	
		
			
				|  |  |  |  |                                       ], | 
		
	
		
			
				|  |  |  |  |                                     ), | 
		
	
		
			
				|  |  |  |  |                                   ], | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                               LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true).onPress(() { | 
		
	
		
			
				|  |  |  |  |                                 Navigator.pushNamed(context, AppRoutes.offersAndDiscounts); | 
		
	
		
			
				|  |  |  |  |                               }) | 
		
	
		
			
				|  |  |  |  |                             ], | 
		
	
		
			
				|  |  |  |  |                           ).paddingOnly(left: 21, right: 21), | 
		
	
		
			
				|  |  |  |  |                           Consumer<DashboardProviderModel>( | 
		
	
		
			
				|  |  |  |  |                             builder: (context, model, child) { | 
		
	
		
			
				|  |  |  |  |                               return SizedBox( | 
		
	
		
			
				|  |  |  |  |                                 height: 103 + 33, | 
		
	
		
			
				|  |  |  |  |                                 child: ListView.separated( | 
		
	
		
			
				|  |  |  |  |                                     shrinkWrap: true, | 
		
	
		
			
				|  |  |  |  |                                     physics: const BouncingScrollPhysics(), | 
		
	
		
			
				|  |  |  |  |                                     padding: const EdgeInsets.only(left: 21, right: 21, top: 13), | 
		
	
		
			
				|  |  |  |  |                                     scrollDirection: Axis.horizontal, | 
		
	
		
			
				|  |  |  |  |                                     itemBuilder: (cxt, index) { | 
		
	
		
			
				|  |  |  |  |                                       return model.isOffersLoading | 
		
	
		
			
				|  |  |  |  |                                           ? const OffersShimmerWidget() | 
		
	
		
			
				|  |  |  |  |                                           : InkWell( | 
		
	
		
			
				|  |  |  |  |                                         onTap: () { | 
		
	
		
			
				|  |  |  |  |                                           navigateToDetails(data.getOffersList[index]); | 
		
	
		
			
				|  |  |  |  |                                         }, | 
		
	
		
			
				|  |  |  |  |                                         child: SizedBox( | 
		
	
		
			
				|  |  |  |  |                                           width: 73, | 
		
	
		
			
				|  |  |  |  |                                           child: Column( | 
		
	
		
			
				|  |  |  |  |                                             crossAxisAlignment: CrossAxisAlignment.center, | 
		
	
		
			
				|  |  |  |  |                                             children: [ | 
		
	
		
			
				|  |  |  |  |                                               Container( | 
		
	
		
			
				|  |  |  |  |                                                 width: 73, | 
		
	
		
			
				|  |  |  |  |                                                 height: 73, | 
		
	
		
			
				|  |  |  |  |                                                 decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                                   borderRadius: const BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                     Radius.circular(100), | 
		
	
		
			
				|  |  |  |  |                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                   4.height, | 
		
	
		
			
				|  |  |  |  |                                                   Expanded( | 
		
	
		
			
				|  |  |  |  |                                                     child: AppState().isArabic(context) | 
		
	
		
			
				|  |  |  |  |                                                         ? data.getOffersList[index].titleAR!.toText12(isCenter: true, maxLine: 1) | 
		
	
		
			
				|  |  |  |  |                                                         : data.getOffersList[index].title!.toText12(isCenter: true, maxLine: 1), | 
		
	
		
			
				|  |  |  |  |                                                   border: Border.all(color: MyColors.lightGreyE3Color, width: 1), | 
		
	
		
			
				|  |  |  |  |                                                 ), | 
		
	
		
			
				|  |  |  |  |                                                 child: ClipRRect( | 
		
	
		
			
				|  |  |  |  |                                                   borderRadius: const BorderRadius.all( | 
		
	
		
			
				|  |  |  |  |                                                     Radius.circular(50), | 
		
	
		
			
				|  |  |  |  |                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                 ], | 
		
	
		
			
				|  |  |  |  |                                                   child: Hero( | 
		
	
		
			
				|  |  |  |  |                                                     tag: "ItemImage" + data.getOffersList[index].rowID!, | 
		
	
		
			
				|  |  |  |  |                                                     transitionOnUserGestures: true, | 
		
	
		
			
				|  |  |  |  |                                                     child: Image.network( | 
		
	
		
			
				|  |  |  |  |                                                       data.getOffersList[index].bannerImage!, | 
		
	
		
			
				|  |  |  |  |                                                       fit: BoxFit.contain, | 
		
	
		
			
				|  |  |  |  |                                                     ), | 
		
	
		
			
				|  |  |  |  |                                                   ), | 
		
	
		
			
				|  |  |  |  |                                                 ), | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                             ), | 
		
	
		
			
				|  |  |  |  |                                           ); | 
		
	
		
			
				|  |  |  |  |                                   }, | 
		
	
		
			
				|  |  |  |  |                                   separatorBuilder: (cxt, index) => 8.width, | 
		
	
		
			
				|  |  |  |  |                                   itemCount: 6), | 
		
	
		
			
				|  |  |  |  |                             ); | 
		
	
		
			
				|  |  |  |  |                           }, | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ], | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ) | 
		
	
		
			
				|  |  |  |  |                 ], | 
		
	
		
			
				|  |  |  |  |                                               4.height, | 
		
	
		
			
				|  |  |  |  |                                               Expanded( | 
		
	
		
			
				|  |  |  |  |                                                 child: AppState().isArabic(context) | 
		
	
		
			
				|  |  |  |  |                                                     ? data.getOffersList[index].titleAR!.toText12(isCenter: true, maxLine: 1) | 
		
	
		
			
				|  |  |  |  |                                                     : data.getOffersList[index].title!.toText12(isCenter: true, maxLine: 1), | 
		
	
		
			
				|  |  |  |  |                                               ), | 
		
	
		
			
				|  |  |  |  |                                             ], | 
		
	
		
			
				|  |  |  |  |                                           ), | 
		
	
		
			
				|  |  |  |  |                                         ), | 
		
	
		
			
				|  |  |  |  |                                       ); | 
		
	
		
			
				|  |  |  |  |                                     }, | 
		
	
		
			
				|  |  |  |  |                                     separatorBuilder: (cxt, index) => 8.width, | 
		
	
		
			
				|  |  |  |  |                                     itemCount: 6), | 
		
	
		
			
				|  |  |  |  |                               ); | 
		
	
		
			
				|  |  |  |  |                             }, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ], | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ) | 
		
	
		
			
				|  |  |  |  |                   ], | 
		
	
		
			
				|  |  |  |  |                 ), | 
		
	
		
			
				|  |  |  |  |               ), | 
		
	
		
			
				|  |  |  |  |             ), | 
		
	
		
			
				|  |  |  |  |           ) | 
		
	
	
		
			
				
					|  |  |  | 
 |