import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart'; import 'package:car_customer_app/views/dashboard/widgets/my_recent_branches_widget.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/dashboard_view_model_customer.dart'; import 'package:mc_common_app/views/advertisement/ads_list.dart'; import 'package:mc_common_app/views/appointments/widgets/common_appointment_slider_widget.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/view_all_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'package:badges/badges.dart' as b; import 'package:easy_localization/easy_localization.dart'; class HomeFragment extends StatelessWidget { const HomeFragment({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( drawer: CustomDrawer(dashboardVM: context.watch()), appBar: CustomAppBar( isDrawerEnabled: true, leadingWidth: 100, onTap: () => navigateWithName(context, AppRoutes.settingOptionsLanguages), actions: [ IconButton( onPressed: () { context.read().onRefresh(context); }, icon: const b.Badge( badgeContent: Text( '3', style: TextStyle( fontSize: 10, color: Colors.white, ), ), badgeStyle: b.BadgeStyle( badgeColor: MyColors.primaryColor, padding: EdgeInsets.all(5), ), child: Icon(Icons.notifications_active), ), ), 10.width, ], ), body: SizedBox( width: double.infinity, height: double.infinity, child: RefreshIndicator( onRefresh: () async { await context.read().onRefresh(context); }, child: ListView( children: [ 16.height, ViewAllWidget( title: LocaleKeys.upcoming_appointment.tr().toUpperCase(), subTitle: LocaleKeys.view_all.tr(), onSubtitleTapped: () { context.read().onNavbarTapped(1); context.read().applyFilterOnAppointmentsVM(appointmentStatusEnum: AppointmentStatusEnum.allAppointments); }, ).horPaddingMain(), CommonAppointmentSliderWidget(), 7.height, Consumer( builder: (BuildContext context, AppointmentsVM appointmentVM, Widget? child) { if (appointmentVM.state == ViewState.busy) { return Center(child: CircularProgressIndicator()); } return Column( children: [ ViewAllWidget( title: LocaleKeys.my_recent_providers.tr().toUpperCase(), subTitle: '', onSubtitleTapped: () { // context.read().onNavbarTapped(0); // context.read().applyFilterOnBranches(index: 0); }) .horPaddingMain(), MyRecentBranchesWidget(nearbyBranches: appointmentVM.myRecentBranches).horPaddingMain(), ], ); }, ), Consumer( builder: (BuildContext context, AdVM adVM, Widget? child) { if (adVM.state == ViewState.busy) { return Center(child: CircularProgressIndicator()); } return Column( children: [ if (adVM.myActiveAdsForHome.isNotEmpty) ...[ Column( children: [ 15.height, ViewAllWidget( title: LocaleKeys.my_active_Ads.tr().toUpperCase(), subTitle: LocaleKeys.view_all.tr(), onSubtitleTapped: () { context.read().onNavbarTapped(3); context.read().updateIsExploreAds(false); }).horPaddingMain(), BuildAdsList( shouldShowAdStatus: true, isAdsFragment: false, adsList: adVM.myActiveAdsForHome, scrollPhysics: NeverScrollableScrollPhysics(), ), ], ) ], if (adVM.exploreAds.isNotEmpty) ...[ Column( children: [ 15.height, ViewAllWidget( title: LocaleKeys.myRecommendedAds.tr().toUpperCase(), subTitle: LocaleKeys.view_all.tr(), onSubtitleTapped: () { context.read().onNavbarTapped(3); context.read().updateIsExploreAds(true); context.read().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); }, ).horPaddingMain(), BuildAdsList( shouldShowAdStatus: false, adsList: adVM.exploreAds.length >= 3 ? adVM.exploreAds.take(3).toList() : adVM.exploreAds, isAdsFragment: false, scrollPhysics: NeverScrollableScrollPhysics(), ), ], ) ] ], ); }, ), 20.height, ], ), ), ), ); } }