import 'dart:async'; import 'dart:developer'; import 'package:car_customer_app/views/dashboard/fragments/my_requests_fragment.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/chat_view_model.dart'; import 'package:mc_common_app/view_models/dashboard_view_model_customer.dart'; import 'package:mc_common_app/view_models/requests_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/widgets/bottom_nav_bar.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/general_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); scheduleMicrotask(() { context.read().populateAppointmentsFilterList(); context.read().populateBranchesFilterList(); context.read().populateRequestsFilterList(); context.read().populateAdsFilterList(); _onRefresh(); }); } Future _onRefresh() async { AdVM adVM = Provider.of(context, listen: false); AppointmentsVM appointmentsVM = Provider.of(context, listen: false); RequestsVM requestsVM = Provider.of(context, listen: false); ChatVM chatVM = Provider.of(context, listen: false); if (appointmentsVM.myAppointments.isEmpty) { await appointmentsVM.getMyAppointments(); } if (appointmentsVM.nearbyBranches.isEmpty) { await appointmentsVM.getAllNearBranches(); } if (adVM.myAds.isEmpty) { await adVM.getMyAds(); } if (adVM.exploreAds.isEmpty) { await adVM.getExploreAds(); } if (requestsVM.myRequests.isEmpty) { await requestsVM.getRequests(appType: AppType.customer); } if (adVM.vehicleTypes.isEmpty) { await adVM.getVehicleTypes(); } if (adVM.vehicleAdsDurations.isEmpty) { await adVM.getVehicleAdsDuration(); } await chatVM.buildHubConnection(context); adVM.updateVehicleAdDurationId( SelectionModel( selectedId: adVM.vehicleAdsDurations.first.id ?? 0, selectedOption: "${adVM.vehicleAdsDurations.first.days} Days", itemPrice: adVM.vehicleAdsDurations.first.price!.toInt().toString(), ), ); } List fragments = [ const BranchesFragment(), const AppointmentsFragment(), const HomeFragment(), AdsFragment(), MyRequestsFragment(), ]; String getPageTitle(int index) { if (index == 0) { return "Select Branch"; } if (index == 1) { return "Appointments"; } if (index == 2) { return ""; } if (index == 3) { return "Ads"; } if (index == 4) { return "My Requests"; } return ""; } @override Widget build(BuildContext context) { DashboardVmCustomer dashboardVM = context.read(); bool isHomePage = dashboardVM.selectedNavbarBarIndex == 2; return Scaffold( appBar: CustomAppBar( backgroundColor: null, leadingWidth: 100, title: getPageTitle(dashboardVM.selectedNavbarBarIndex), profileImageUrl: MyAssets.bnCar, isRemoveBackButton: true, isDrawerEnabled: isHomePage ? true : false, onTap: () { if (isHomePage) { navigateWithName(context, AppRoutes.settingOptionsLanguages); } }, actions: [ (isHomePage ? Row( children: [ "${AppState().currentAppType}".toText(color: MyColors.darkTextColor).onPress(() { print("myId: ${AppState().getUser.data!.userInfo!.userId}"); print("myId: ${AppState().getUser.data!.userInfo!.customerId}"); // context.read().buildHubConnection(); }), 10.width, MyAssets.notificationsBellIcon.buildSvg().onPress(() {}), 15.width, Icon(Icons.message, color: MyColors.darkTextColor).onPress(() {}), ], ) : InkWell( onTap: () async { if (dashboardVM.selectedNavbarBarIndex == 3) { await context.read().populateDataForAdFilter(); navigateWithName(context, AppRoutes.adsFilterView); } }, child: MyAssets.searchIcon.buildSvg(), )) .paddingOnly(right: 21) ], ), bottomNavigationBar: CustomBottomNavbar(), body: fragments[context.watch().selectedNavbarBarIndex], ); } }