|
|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
import 'package:car_customer_app/views/dashboard/fragments/ads_fragment.dart';
|
|
|
|
|
import 'package:car_customer_app/views/dashboard/fragments/appointments_fragment.dart';
|
|
|
|
|
@ -57,8 +58,9 @@ class _DashboardPageState extends State<DashboardPage> {
|
|
|
|
|
if (appointmentsVM.myAppointments.isEmpty) {
|
|
|
|
|
await appointmentsVM.getMyAppointments();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (appointmentsVM.nearbyBranches.isEmpty) {
|
|
|
|
|
await appointmentsVM.getAllNearBranches(isFromRefresh: true);
|
|
|
|
|
await appointmentsVM.applyFilterOnBranches(index: 0); // to get all branches!
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (adVM.myAds.isEmpty) {
|
|
|
|
|
@ -99,7 +101,7 @@ class _DashboardPageState extends State<DashboardPage> {
|
|
|
|
|
|
|
|
|
|
String getPageTitle(int index) {
|
|
|
|
|
if (index == 0) {
|
|
|
|
|
return "Select Branch";
|
|
|
|
|
return "Branches";
|
|
|
|
|
}
|
|
|
|
|
if (index == 1) {
|
|
|
|
|
return "Appointments";
|
|
|
|
|
@ -120,54 +122,56 @@ class _DashboardPageState extends State<DashboardPage> {
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
DashboardVmCustomer dashboardVM = context.read<DashboardVmCustomer>();
|
|
|
|
|
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("userId: ${AppState().getUser.data!.userInfo!.userId}");
|
|
|
|
|
print("customerId: ${AppState().getUser.data!.userInfo!.customerId}");
|
|
|
|
|
// context.read<ChatVM>().buildHubConnection();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
10.width,
|
|
|
|
|
MyAssets.notificationsBellIcon.buildSvg().onPress(() {}),
|
|
|
|
|
15.width,
|
|
|
|
|
Icon(Icons.message, color: MyColors.darkTextColor).onPress(
|
|
|
|
|
() {
|
|
|
|
|
_onRefresh();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
: InkWell(
|
|
|
|
|
onTap: () async {
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 3) {
|
|
|
|
|
await context.read<AdVM>().populateDataForAdFilter();
|
|
|
|
|
navigateWithName(context, AppRoutes.adsFilterView);
|
|
|
|
|
}
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 0) {
|
|
|
|
|
navigateWithName(context, AppRoutes.branchSearchFilterPage);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
child: Consumer(
|
|
|
|
|
builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) {
|
|
|
|
|
return appointmentsVM.branchFiltersCounter > 0
|
|
|
|
|
? Padding(
|
|
|
|
|
return WillPopScope(
|
|
|
|
|
onWillPop: () async => Future.value(false),
|
|
|
|
|
child: 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("userId: ${AppState().getUser.data!.userInfo!.userId}");
|
|
|
|
|
print("customerId: ${AppState().getUser.data!.userInfo!.customerId}");
|
|
|
|
|
// context.read<ChatVM>().buildHubConnection();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
10.width,
|
|
|
|
|
MyAssets.notificationsBellIcon.buildSvg().onPress(() {}),
|
|
|
|
|
15.width,
|
|
|
|
|
Icon(Icons.message, color: MyColors.darkTextColor)
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
: InkWell(
|
|
|
|
|
onTap: () async {
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 0) {
|
|
|
|
|
navigateWithName(context, AppRoutes.branchSearchFilterPage);
|
|
|
|
|
}
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 1) {
|
|
|
|
|
navigateWithName(context, AppRoutes.appoinmentSearchFilterPage);
|
|
|
|
|
}
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 3) {
|
|
|
|
|
await context.read<AdVM>().populateDataForAdFilter();
|
|
|
|
|
navigateWithName(context, AppRoutes.adsFilterView);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
child: Consumer2<AppointmentsVM, AdVM>(
|
|
|
|
|
builder: (BuildContext context, AppointmentsVM appointmentsVM, AdVM adVM, Widget? child) {
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 0) {
|
|
|
|
|
if (appointmentsVM.branchFiltersCounter > 0) {
|
|
|
|
|
return Padding(
|
|
|
|
|
padding: const EdgeInsets.only(top: 20),
|
|
|
|
|
child: Badge(
|
|
|
|
|
largeSize: 15,
|
|
|
|
|
@ -176,16 +180,56 @@ class _DashboardPageState extends State<DashboardPage> {
|
|
|
|
|
label: Text('${appointmentsVM.branchFiltersCounter}'),
|
|
|
|
|
child: MyAssets.searchIcon.buildSvg(),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
: MyAssets.searchIcon.buildSvg();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
))
|
|
|
|
|
.paddingOnly(right: 21)
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
return MyAssets.searchIcon.buildSvg();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 1) {
|
|
|
|
|
if (appointmentsVM.appointmentFiltersCounter > 0) {
|
|
|
|
|
return Padding(
|
|
|
|
|
padding: const EdgeInsets.only(top: 20),
|
|
|
|
|
child: Badge(
|
|
|
|
|
largeSize: 15,
|
|
|
|
|
smallSize: 20,
|
|
|
|
|
backgroundColor: MyColors.darkPrimaryColor,
|
|
|
|
|
label: Text('${appointmentsVM.appointmentFiltersCounter}'),
|
|
|
|
|
child: MyAssets.searchIcon.buildSvg(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
return MyAssets.searchIcon.buildSvg();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (dashboardVM.selectedNavbarBarIndex == 3) {
|
|
|
|
|
if (adVM.adsFiltersCounter > 0) {
|
|
|
|
|
return Padding(
|
|
|
|
|
padding: const EdgeInsets.only(top: 20),
|
|
|
|
|
child: Badge(
|
|
|
|
|
largeSize: 15,
|
|
|
|
|
smallSize: 20,
|
|
|
|
|
backgroundColor: MyColors.darkPrimaryColor,
|
|
|
|
|
label: Text('${adVM.adsFiltersCounter}'),
|
|
|
|
|
child: MyAssets.searchIcon.buildSvg(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
return MyAssets.searchIcon.buildSvg();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return MyAssets.searchIcon.buildSvg();
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
))
|
|
|
|
|
.paddingOnly(right: 21)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
bottomNavigationBar: CustomBottomNavbar(),
|
|
|
|
|
body: fragments[context.watch<DashboardVmCustomer>().selectedNavbarBarIndex],
|
|
|
|
|
),
|
|
|
|
|
bottomNavigationBar: CustomBottomNavbar(),
|
|
|
|
|
body: fragments[context.watch<DashboardVmCustomer>().selectedNavbarBarIndex],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|