import 'dart:async'; import 'package:car_customer_app/view_models/appointments_view_model.dart'; import 'package:car_customer_app/view_models/dashboard_view_model.dart'; import 'package:car_customer_app/views/dashboard/fragments/ads_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/appointments_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/home_fragment.dart'; import 'package:car_customer_app/views/dashboard/fragments/settings_fragment.dart'; import 'package:car_customer_app/views/dashboard/widgets/bottom_nav_bar.dart'; import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/models/widgets_models.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/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'fragments/branches_fragment.dart'; class DashboardPage extends StatefulWidget { const DashboardPage({Key? key}) : super(key: key); @override State createState() => _DashboardPageState(); } class _DashboardPageState extends State { // late DashboardVM dashboardVM; @override void initState() { super.initState(); // dashboardVM = Provider.of(context, listen: false); fetchUsername(); scheduleMicrotask(() { context.read().populateAppointmentsFilterList(); context.read().populateProvidersFilterList(); context.read().populateAdsFilterList(); context.read().getAllNearBranches(); _onRefresh(); }); } Future _onRefresh() async { AdVM adVm = Provider.of(context, listen: false); AppointmentsVM appointmentsVM = Provider.of(context, listen: false); if (appointmentsVM.myAppointments.isEmpty) { await appointmentsVM.getMyAppointments(); } if (adVm.myAds.isEmpty) { await adVm.getMyAds(); } if (adVm.exploreAds.isEmpty) { await adVm.getExploreAds(); } final adVM = context.read(); if (adVM.vehicleTypes.isEmpty) { await adVM.getVehicleTypes(); } if (adVM.vehicleAdsDurations.isEmpty) { await adVM.getVehicleAdsDuration(); } adVM.updateVehicleAdDurationId( SelectionModel( selectedId: adVM.vehicleAdsDurations.first.id ?? 0, selectedOption: "${adVM.vehicleAdsDurations.first.days} Days", itemPrice: adVM.vehicleAdsDurations.first.price!.toInt().toString(), ), ); } fetchUsername() async {} List fragments = [ const BranchesFragment(), const AppointmentsFragment(), const HomeFragment(), AdsFragment(), const SettingsFragment(), ]; String getPageTitle(int index) { if (index == 0) { return "Branches"; } if (index == 1) { return "Appointments"; } if (index == 2) { return ""; } if (index == 3) { return "Ads"; } if (index == 4) { return ""; } return ""; } @override Widget build(BuildContext context) { bool isHomePage = context.watch().selectedNavbarBarIndex == 2; bool isAdsPage = context.watch().selectedNavbarBarIndex == 3; return Scaffold( appBar: CustomAppBar( backgroundColor: null, leadingWidth: 100, title: getPageTitle(context.watch().selectedNavbarBarIndex), profileImageUrl: MyAssets.bnCar, isRemoveBackButton: true, isDrawerEnabled: isHomePage ? true : false, actions: [ (isHomePage ? MyAssets.notificationsBellIcon.buildSvg() : InkWell( onTap: () => navigateWithName(context, AppRoutes.adsSearchFilterScreen), child: MyAssets.searchIcon.buildSvg(), )) .paddingOnly(right: 21) ], ), drawer: CustomDrawer(dashboardVM: context.watch()), bottomNavigationBar: CustomBottomNavbar(), body: fragments[context.watch().selectedNavbarBarIndex], ); } }