import 'dart:async'; import 'package:badges/badges.dart' as b; import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:car_provider_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/extensions/int_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/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/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(); _onRefresh(); } Future _onRefresh() async { final requestsVM = context.read(); final chatVM = context.read(); // context.read().populateAdsFilterList(); context.read().getBranchAndServices(); AdVM adVm = Provider.of(context, listen: false); AppointmentsVM appointmentsVM = Provider.of(context, listen: false); if (appointmentsVM.myAppointments.isEmpty) { await appointmentsVM.getProviderMyAppointments({ "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); } // 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: () { _scaffoldKey.currentState!.openDrawer(); }, onRefresh: () async { _onRefresh(); }, onNotificaitonClick: () { _onRefresh(); }, ), AdsFragment( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, ), MyRequestsFragment( onBackButtonTapped: () { dashboardVM.updateIndex(2); }, ), ]; return 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, ), ); } }