import 'dart:async'; import 'package:badges/badges.dart' as b; import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:car_provider_app/views/dashboard/fragments/ads_fragment.dart'; import 'package:car_provider_app/views/dashboard/fragments/appoinment_fragment.dart'; import 'package:car_provider_app/views/dashboard/fragments/my_requests_fragment.dart'; import 'package:car_provider_app/views/dashboard/widget/drawer_widget.dart'; import 'package:car_provider_app/views/settings/branch/branch_list_page.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/main.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/chat_view_model.dart'; import 'package:mc_common_app/view_models/requests_view_model.dart'; import 'package:mc_common_app/view_models/subscriptions_view_model.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/bottom_nav_bar.dart'; import 'package:provider/provider.dart'; import 'fragments/branch_appointment_fragment.dart'; import 'fragments/home_fragment.dart'; class DashboardPage extends StatefulWidget { const DashboardPage({Key? key}) : super(key: key); @override State createState() => _DashboardPageState(); } class _DashboardPageState extends State { late DashboardVM dashboardVM; final GlobalKey _scaffoldKey = GlobalKey(); @override void initState() { super.initState(); dashboardVM = Provider.of(context, listen: false); context.read().populateRequestsFilterList(); context.read().populateAppointmentsFilterList(); scheduleMicrotask(() => _onRefresh()); } Future _onRefresh() async { final requestsVM = context.read(); await context.read().getBranchAndServices(); AdVM adVm = Provider.of(context, listen: false); SubscriptionsVM sVM = Provider.of(context, listen: false); await context.read().getMyAppointmentsForProvider({"ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0"}); adVm.populateAdsFilterList(); if (adVm.myAds.isEmpty) { await adVm.getMyAds(); } if (adVm.exploreAds.isEmpty) { await adVm.getExploreAds(); } if (adVm.vehicleTypes.isEmpty) { await adVm.getVehicleTypes(); } if (adVm.vehicleAdsDurations.isEmpty) { await adVm.getVehicleAdsDuration(); } if (requestsVM.myRequests.isEmpty) { await requestsVM.getRequests(appType: AppType.provider); } if (sVM.mySubscriptionsBySp.isEmpty) { await sVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); } if (sVM.tempSubscriptions.isEmpty) { await sVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true); } // await chatVM.buildHubConnection(context); } @override Widget build(BuildContext context) { List fragments = [ BranchListPage( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, onRefresh: () async { context.read().getBranchAndServices(); }, ), BranchAppointmentFragment( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, onRefresh: () async { context.read().getBranchAndServices(); }, ), HomeFragment( onTap: () { navigateWithName(context, AppRoutes.settingOptionsLanguages); }, onRefresh: () async { _onRefresh(); }, onNotificaitonClick: () { _onRefresh(); }, ), AdsFragment( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, ), MyRequestsFragment( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, ), ]; return PopScope( canPop: false, child: Scaffold( key: _scaffoldKey, // drawer: CustomDrawer(dashboardVM: dashboardVM), // body: Consumer(builder: (context, model, _) { // return fragments[dashboardVM.selectedNavbarBarIndex]; // }), body: fragments[context.watch().selectedNavbarBarIndex], bottomNavigationBar: CustomBottomNavbar( onSelected: (i) { dashboardVM.updateIndex(i); }, isProvider: true, selectedNavbarBarIndex: dashboardVM.selectedNavbarBarIndex, ), ), ); } }