From f510711768cca5db03fc2dddb2850bbbd90413f6 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 28 Nov 2023 17:11:36 +0300 Subject: [PATCH] added setting screens --- lib/config/customer_routes.dart | 10 +- lib/views/dashboard/dashboard_page.dart | 14 +- .../dashboard/fragments/home_fragment.dart | 156 ++++++------ ...ragment.dart => my_requests_fragment.dart} | 10 +- .../fragments/settings_fragment.dart | 10 - lib/views/requests/create_request_page.dart | 234 ------------------ lib/views/requests/offer_list_page.dart | 87 ------- lib/views/requests/widget/request_item.dart | 121 --------- .../requests/widget/request_status_chip.dart | 30 --- 9 files changed, 102 insertions(+), 570 deletions(-) rename lib/views/dashboard/fragments/{requests_fragment.dart => my_requests_fragment.dart} (90%) delete mode 100644 lib/views/dashboard/fragments/settings_fragment.dart delete mode 100644 lib/views/requests/create_request_page.dart delete mode 100644 lib/views/requests/offer_list_page.dart delete mode 100644 lib/views/requests/widget/request_item.dart delete mode 100644 lib/views/requests/widget/request_status_chip.dart diff --git a/lib/config/customer_routes.dart b/lib/config/customer_routes.dart index bfc73f0..10e2fd8 100644 --- a/lib/config/customer_routes.dart +++ b/lib/config/customer_routes.dart @@ -1,5 +1,4 @@ import 'package:car_customer_app/chat/chat_view.dart'; -import 'package:car_customer_app/views/requests/offer_list_page.dart'; import 'package:mc_common_app/views/appointments/appointment_detail_view.dart'; import 'package:mc_common_app/views/appointments/book_appointment_schedules_view.dart'; import 'package:mc_common_app/views/appointments/book_appointment_services_view.dart'; @@ -9,7 +8,6 @@ import 'package:mc_common_app/views/appointments/review_appointment_view.dart'; import 'package:car_customer_app/views/dashboard/dashboard_page.dart'; import 'package:car_customer_app/views/provider/branch_detail_page.dart'; import 'package:car_customer_app/views/provider/provider_profile_page.dart'; -import 'package:car_customer_app/views/requests/create_request_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; @@ -22,6 +20,11 @@ import 'package:mc_common_app/views/advertisement/create_ad_view.dart'; import 'package:mc_common_app/views/advertisement/select_ad_type_view.dart'; import 'package:mc_common_app/views/payments/payment_methods_view.dart'; import 'package:mc_common_app/views/advertisement/ads_filter_view.dart'; +import 'package:mc_common_app/views/requests/create_request_page.dart'; +import 'package:mc_common_app/views/requests/offer_list_page.dart'; +import 'package:mc_common_app/views/setting_options/setting_options_faqs.dart'; +import 'package:mc_common_app/views/setting_options/setting_options_invite_friends.dart'; +import 'package:mc_common_app/views/setting_options/setting_options_language.dart'; class CustomerAppRoutes { static final Map routes = { @@ -44,5 +47,8 @@ class CustomerAppRoutes { AppRoutes.offersListPage: (context) => OfferListPage(offersList: ModalRoute.of(context)!.settings.arguments as List), AppRoutes.createRequestPage: (context) => CreateRequestPage(), AppRoutes.chatView: (context) => ChatView(), + AppRoutes.settingOptionsFaqs: (context) => SettingOptionsFAQs(), + AppRoutes.settingOptionsLanguages: (context) => SettingOptionsLanguage(), + AppRoutes.settingOptionsInviteFriends: (context) => SettingOptionsInviteFriends(), }; } diff --git a/lib/views/dashboard/dashboard_page.dart b/lib/views/dashboard/dashboard_page.dart index 717b142..ebe57cf 100644 --- a/lib/views/dashboard/dashboard_page.dart +++ b/lib/views/dashboard/dashboard_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'package:car_customer_app/views/dashboard/fragments/my_requests_fragment.dart'; import 'package:mc_common_app/view_models/appointments_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'; @@ -6,7 +7,6 @@ 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: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'; @@ -16,9 +16,7 @@ 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'; -import 'fragments/requests_fragment.dart'; class DashboardPage extends StatefulWidget { const DashboardPage({Key? key}) : super(key: key); @@ -84,7 +82,7 @@ class _DashboardPageState extends State { const AppointmentsFragment(), const HomeFragment(), AdsFragment(), - RequestsFragment(), + MyRequestsFragment(), ]; String getPageTitle(int index) { @@ -118,9 +116,14 @@ class _DashboardPageState extends State { profileImageUrl: MyAssets.bnCar, isRemoveBackButton: true, isDrawerEnabled: isHomePage ? true : false, + onTap: () { + if (isHomePage) { + navigateWithName(context, AppRoutes.settingOptionsLanguages); + } + }, actions: [ (isHomePage - ? MyAssets.notificationsBellIcon.buildSvg() + ? MyAssets.notificationsBellIcon.buildSvg().onPress(() {}) : InkWell( onTap: () async { if (dashboardVM.selectedNavbarBarIndex == 3) { @@ -133,7 +136,6 @@ class _DashboardPageState extends State { .paddingOnly(right: 21) ], ), - drawer: CustomDrawer(dashboardVM: context.watch()), bottomNavigationBar: CustomBottomNavbar(), body: fragments[context.watch().selectedNavbarBarIndex], ); diff --git a/lib/views/dashboard/fragments/home_fragment.dart b/lib/views/dashboard/fragments/home_fragment.dart index ad1765e..da7a09b 100644 --- a/lib/views/dashboard/fragments/home_fragment.dart +++ b/lib/views/dashboard/fragments/home_fragment.dart @@ -1,3 +1,4 @@ +import 'package:car_customer_app/views/dashboard/widgets/drawer_widget.dart'; import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/view_models/dashboard_view_model_customer.dart'; import 'package:mc_common_app/views/appointments/widgets/customer_appointment_slider_widget.dart'; @@ -16,88 +17,91 @@ class HomeFragment extends StatelessWidget { @override Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - height: double.infinity, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.only(top: 8), - child: Column( - mainAxisSize: MainAxisSize.max, - children: [ - 16.height, - ViewAllWidget( - title: "Upcoming Appointment".toUpperCase(), - subTitle: "View All", - onSubtitleTapped: () { - context.read().onNavbarTapped(1); - context.read().applyFilterOnAppointmentsVM(appointmentStatusEnum: AppointmentStatusEnum.allAppointments); - }, - ).horPaddingMain(), - CustomerAppointmentSliderWidget(myUpComingAppointments: context.read().myUpComingAppointments), - 7.height, - ViewAllWidget( - title: "My Recent Service Providers".toUpperCase(), + return Scaffold( + drawer: CustomDrawer(dashboardVM: context.watch()), + body: SizedBox( + width: double.infinity, + height: double.infinity, + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.only(top: 8), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + 16.height, + ViewAllWidget( + title: "Upcoming Appointment".toUpperCase(), subTitle: "View All", onSubtitleTapped: () { - context.read().onNavbarTapped(0); - context.read().applyFilterOnProviders(index: 0); - }).horPaddingMain(), - Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { - return ServiceProviderWidget(nearbyBranches: context.read().nearbyBranches).horPaddingMain(); - }), - Consumer( - builder: (BuildContext context, AdVM adVM, Widget? child) { - return Column( - children: [ - if (adVM.myActiveAdsForHome.isNotEmpty) ...[ - Column( - children: [ - 15.height, - ViewAllWidget( - title: "My Active Ads".toUpperCase(), + context.read().onNavbarTapped(1); + context.read().applyFilterOnAppointmentsVM(appointmentStatusEnum: AppointmentStatusEnum.allAppointments); + }, + ).horPaddingMain(), + CustomerAppointmentSliderWidget(myUpComingAppointments: context.read().myUpComingAppointments), + 7.height, + ViewAllWidget( + title: "My Recent Service Providers".toUpperCase(), + subTitle: "View All", + onSubtitleTapped: () { + context.read().onNavbarTapped(0); + context.read().applyFilterOnProviders(index: 0); + }).horPaddingMain(), + Consumer(builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { + return ServiceProviderWidget(nearbyBranches: context.read().nearbyBranches).horPaddingMain(); + }), + Consumer( + builder: (BuildContext context, AdVM adVM, Widget? child) { + return Column( + children: [ + if (adVM.myActiveAdsForHome.isNotEmpty) ...[ + Column( + children: [ + 15.height, + ViewAllWidget( + title: "My Active Ads".toUpperCase(), + subTitle: "View All", + onSubtitleTapped: () { + context.read().onNavbarTapped(3); + context.read().updateIsExploreAds(false); + }).horPaddingMain(), + BuildAdsList( + shouldShowAdStatus: true, + isAdsFragment: false, + adsList: adVM.myActiveAdsForHome, + scrollPhysics: NeverScrollableScrollPhysics(), + ), + ], + ) + ], + if (adVM.exploreAds.isNotEmpty) ...[ + Column( + children: [ + 15.height, + ViewAllWidget( + title: "My Recommended Ads".toUpperCase(), subTitle: "View All", onSubtitleTapped: () { context.read().onNavbarTapped(3); - context.read().updateIsExploreAds(false); - }).horPaddingMain(), - BuildAdsList( - shouldShowAdStatus: true, - isAdsFragment: false, - adsList: adVM.myActiveAdsForHome, - scrollPhysics: NeverScrollableScrollPhysics(), - ), - ], - ) + context.read().updateIsExploreAds(true); + context.read().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); + }, + ).horPaddingMain(), + BuildAdsList( + shouldShowAdStatus: false, + adsList: adVM.exploreAds.length >= 3 ? adVM.exploreAds.take(3).toList() : adVM.exploreAds, + isAdsFragment: false, + scrollPhysics: NeverScrollableScrollPhysics(), + ), + ], + ) + ] ], - if (adVM.exploreAds.isNotEmpty) ...[ - Column( - children: [ - 15.height, - ViewAllWidget( - title: "My Recommended Ads".toUpperCase(), - subTitle: "View All", - onSubtitleTapped: () { - context.read().onNavbarTapped(3); - context.read().updateIsExploreAds(true); - context.read().applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); - }, - ).horPaddingMain(), - BuildAdsList( - shouldShowAdStatus: false, - adsList: adVM.exploreAds.length >= 3 ? adVM.exploreAds.take(3).toList() : adVM.exploreAds, - isAdsFragment: false, - scrollPhysics: NeverScrollableScrollPhysics(), - ), - ], - ) - ] - ], - ); - }, - ), - 20.height, - ], + ); + }, + ), + 20.height, + ], + ), ), ), ), diff --git a/lib/views/dashboard/fragments/requests_fragment.dart b/lib/views/dashboard/fragments/my_requests_fragment.dart similarity index 90% rename from lib/views/dashboard/fragments/requests_fragment.dart rename to lib/views/dashboard/fragments/my_requests_fragment.dart index 303053f..e5aa41f 100644 --- a/lib/views/dashboard/fragments/requests_fragment.dart +++ b/lib/views/dashboard/fragments/my_requests_fragment.dart @@ -1,5 +1,4 @@ import 'package:mc_common_app/view_models/requests_view_model.dart'; -import 'package:car_customer_app/views/requests/widget/request_item.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; @@ -7,10 +6,13 @@ 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/utils/navigator.dart'; +import 'package:mc_common_app/views/requests/widget/request_item.dart'; import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; import 'package:provider/provider.dart'; -class RequestsFragment extends StatelessWidget { +class MyRequestsFragment extends StatelessWidget { + const MyRequestsFragment({super.key}); + @override Widget build(BuildContext context) { return Scaffold( @@ -49,7 +51,7 @@ class RequestsFragment extends StatelessWidget { return 16.height; }, itemCount: requestsVM.myRequests.length, - padding: EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8), + padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16, top: 8), ), )) ], @@ -59,7 +61,7 @@ class RequestsFragment extends StatelessWidget { floatingActionButton: FloatingActionButton( onPressed: () => navigateWithName(context, AppRoutes.createRequestPage), backgroundColor: MyColors.darkPrimaryColor, - child: Icon( + child: const Icon( Icons.add, color: MyColors.white, ), diff --git a/lib/views/dashboard/fragments/settings_fragment.dart b/lib/views/dashboard/fragments/settings_fragment.dart deleted file mode 100644 index b5a47cf..0000000 --- a/lib/views/dashboard/fragments/settings_fragment.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/material.dart'; - -class SettingsFragment extends StatelessWidget { - const SettingsFragment({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Container(); - } -} diff --git a/lib/views/requests/create_request_page.dart b/lib/views/requests/create_request_page.dart deleted file mode 100644 index 38e0e89..0000000 --- a/lib/views/requests/create_request_page.dart +++ /dev/null @@ -1,234 +0,0 @@ -import 'package:mc_common_app/view_models/requests_view_model.dart'; -import 'package:flutter/material.dart'; -import 'package:mc_common_app/classes/consts.dart'; -import 'package:mc_common_app/extensions/int_extensions.dart'; -import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:mc_common_app/models/widgets_models.dart'; -import 'package:mc_common_app/theme/colors.dart'; -import 'package:mc_common_app/views/advertisement/ad_creation_steps/ad_creation_steps_containers.dart'; -import 'package:mc_common_app/views/advertisement/picked_images_container.dart'; -import 'package:mc_common_app/widgets/button/show_fill_button.dart'; -import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; -import 'package:mc_common_app/widgets/txt_field.dart'; -import 'package:provider/provider.dart'; - -class CreateRequestPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar( - title: "Create Request", - ), - body: Consumer(builder: (context, requestsVM, widget) { - return Column( - children: [ - Expanded( - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "Vehicle Detail".toText(fontSize: 18, isBold: true), - 8.height, - if (requestsVM.isFetchingRequestType) ...[ - Center( - child: CircularProgressIndicator(), - ), - ] else ...[ - Builder(builder: (context) { - List requestTypeDrop = []; - for (var element in requestsVM.myRequestsTypeEnum) { - requestTypeDrop.add(DropValue(element.enumValue.toInt() ?? 0, element.enumValueStr ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionRequestTypeId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: requestTypeDrop, - dropdownValue: requestsVM.requestTypeId.selectedId != -1 ? DropValue(requestsVM.requestTypeId.selectedId, requestsVM.requestTypeId.selectedOption, "") : null, - hint: "Request Type", - errorValue: requestsVM.requestTypeId.errorValue, - ); - }), - ], - 8.height, - if (requestsVM.requestTypeId.selectedId != -1) - if (requestsVM.isFetchingVehicleType) ...[ - Center( - child: CircularProgressIndicator(), - ), - ] else ...[ - Builder(builder: (context) { - List vehicleTypeDrop = []; - for (var element in requestsVM.vehicleTypes) { - vehicleTypeDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleTypeName ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: vehicleTypeDrop, - dropdownValue: requestsVM.vehicleTypeId.selectedId != -1 ? DropValue(requestsVM.vehicleTypeId.selectedId, requestsVM.vehicleTypeId.selectedOption, "") : null, - hint: "Vehicle Type", - errorValue: requestsVM.vehicleTypeId.errorValue, - ); - }), - ], - 8.height, - if (requestsVM.vehicleTypeId.selectedId != -1) - if (requestsVM.isFetchingVehicleDetail) ...[ - Center( - child: CircularProgressIndicator(), - ), - ] else ...[ - Column( - children: [ - Builder(builder: (context) { - List vehicleBrandsDrop = []; - for (var element in requestsVM.vehicleBrands) { - vehicleBrandsDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleBrandDescription ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleBrandId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: vehicleBrandsDrop, - dropdownValue: requestsVM.vehicleBrandId.selectedId != -1 ? DropValue(requestsVM.vehicleBrandId.selectedId, requestsVM.vehicleBrandId.selectedOption, "") : null, - hint: "Brand", - errorValue: requestsVM.vehicleBrandId.errorValue, - ); - }), - 8.height, - Builder(builder: (context) { - List vehicleModelsDrop = []; - for (var element in requestsVM.vehicleModels) { - if (requestsVM.vehicleBrandId.selectedId == element.vehicleBrandID) vehicleModelsDrop.add(DropValue(element.id?.toInt() ?? 0, element.model ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleModelId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: vehicleModelsDrop, - dropdownValue: requestsVM.vehicleModelId.selectedId != -1 ? DropValue(requestsVM.vehicleModelId.selectedId, requestsVM.vehicleModelId.selectedOption, "") : null, - hint: "Model", - errorValue: requestsVM.vehicleModelId.errorValue, - ); - }), - 8.height, - Builder(builder: (context) { - List vehicleYearModelsDrop = []; - for (var element in requestsVM.vehicleModelYears) { - vehicleYearModelsDrop.add(DropValue(element.id?.toInt() ?? 0, element.modelYear ?? "", "")); - } - - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleModelYearId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: vehicleYearModelsDrop, - dropdownValue: requestsVM.vehicleModelYearId.selectedId != -1 ? DropValue(requestsVM.vehicleModelYearId.selectedId, requestsVM.vehicleModelYearId.selectedOption, "") : null, - hint: "Year", - errorValue: requestsVM.vehicleModelYearId.errorValue, - ); - }), - 8.height, - Builder(builder: (context) { - List vehicleCountriesDrop = []; - for (var element in requestsVM.vehicleCountries) { - vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleCountryId(SelectionModel(selectedOption: value.value, selectedId: value.id)), - list: vehicleCountriesDrop, - dropdownValue: requestsVM.vehicleCountryId.selectedId != -1 ? DropValue(requestsVM.vehicleCountryId.selectedId, requestsVM.vehicleCountryId.selectedOption, "") : null, - hint: "Country", - errorValue: requestsVM.vehicleCountryId.errorValue, - ); - }), - if (requestsVM.vehicleCountryId.selectedId != -1) ...[ - if (requestsVM.isCountryFetching) ...[ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [const CircularProgressIndicator().paddingAll(10)], - ), - ] else ...[ - 8.height, - Builder(builder: (context) { - List vehicleCitiesDrop = []; - for (var element in requestsVM.vehicleCities) { - vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "")); - } - return DropdownField( - (DropValue value) => requestsVM.updateSelectionVehicleCityId(SelectionModel(selectedId: value.id, selectedOption: value.value)), - list: vehicleCitiesDrop, - dropdownValue: requestsVM.vehicleCityId.selectedId != -1 ? DropValue(requestsVM.vehicleCityId.selectedId, requestsVM.vehicleCityId.selectedOption, "") : null, - hint: "City", - errorValue: requestsVM.vehicleCityId.errorValue, - ); - }), - ], - ], - 8.height, - TxtField( - hint: "Price", - value: requestsVM.price, - onChanged: (e) => requestsVM.updatePrice(e), - ), - 8.height, - TxtField( - hint: "Description", - maxLines: 5, - value: requestsVM.description, - onChanged: (e) => requestsVM.updateDescription(e), - ), - 8.height, - DottedRectContainer( - onTap: () => context.read().pickMultipleImages(), - text: "Attach Image", - icon: MyAssets.attachmentIcon.buildSvg(), - ), - if (requestsVM.vehicleImageError != "") ...[ - 10.height, - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - requestsVM.vehicleImageError.toText(fontSize: 14, color: Colors.red), - ], - ).paddingOnly(right: 10) - ], - if (requestsVM.pickedVehicleImages.isNotEmpty) ...[ - 16.height, - PickedImagesContainer( - pickedImages: requestsVM.pickedVehicleImages, - onCrossPressedPrimary: requestsVM.removeImageFromList, - onAddImagePressed: () { - context.read().pickMultipleImages(); - }, - ), - ], - 16.height, - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Checkbox( - value: requestsVM.isShippingDeliveryEnabled, - onChanged: null, - - ), - "Shipping/Delivery".toText(color: MyColors.darkPrimaryColor, isBold: true, fontSize: 18) - ], - ).onPress(() { - requestsVM.updateShippingDeliverEnabled(!requestsVM.isShippingDeliveryEnabled); - }), - ], - ), - ] - ], - ).toContainer(isShadowEnabled: true, marginAll: 16, paddingAll: 12), - ), - ), - ShowFillButton( - title: "Create Request", - maxWidth: double.infinity, - margin: EdgeInsets.all(16), - onPressed: () async { - await context.read().onCreateRequestTapped(context); - }, - ) - ], - ); - }), - ); - } -} diff --git a/lib/views/requests/offer_list_page.dart b/lib/views/requests/offer_list_page.dart deleted file mode 100644 index d97689f..0000000 --- a/lib/views/requests/offer_list_page.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mc_common_app/config/routes.dart'; -import 'package:mc_common_app/extensions/int_extensions.dart'; -import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:mc_common_app/models/requests/offers_model.dart'; -import 'package:mc_common_app/theme/colors.dart'; -import 'package:mc_common_app/utils/navigator.dart'; -import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; - -class OfferListPage extends StatelessWidget { - final List offersList; - - OfferListPage({required this.offersList}); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar(title: "Offers"), - body: offersList.isEmpty - ? Center(child: "No Requests to show.".toText(fontSize: 16, color: MyColors.lightTextColor)) - : ListView.separated( - itemCount: offersList.length, - padding: EdgeInsets.all(16), - itemBuilder: (context, index) { - OffersModel offersModel = offersList[index]; - return Stack( - alignment: Alignment.bottomRight, - children: [ - Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "${offersModel.serviceProvider!.companyName ?? ""}".toText(fontSize: 16, isBold: true), - - //Un read offers count - - // Center( - // child: "2".toText( - // color: Colors.white, - // isBold: true, - // fontSize: 10, - // ), - // ).toContainer( - // backgroundColor: MyColors.redColor, - // borderRadius: 100, - // paddingAll: 1, - // width: 20, - // height: 20, - // ), - ], - ), - 8.height, - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: "${offersModel.comment} and This is dummy text edition.".toText( - color: MyColors.lightTextColor, - fontSize: 12, - ), - ), - 12.width, - "9 Hours Ago".toText( - color: MyColors.lightTextColor, - ) - ], - ), - ], - ), - Icon( - Icons.arrow_forward, - color: MyColors.darkIconColor, - size: 18, - ), - ], - ).onPress(() { - navigateWithName(context, AppRoutes.chatView); - }).toContainer(isShadowEnabled: true); - }, - separatorBuilder: (context, index) => 16.height, - ), - ); - } -} diff --git a/lib/views/requests/widget/request_item.dart b/lib/views/requests/widget/request_item.dart deleted file mode 100644 index 7844b0a..0000000 --- a/lib/views/requests/widget/request_item.dart +++ /dev/null @@ -1,121 +0,0 @@ -import 'package:mc_common_app/view_models/requests_view_model.dart'; -import 'package:flutter/material.dart'; -import 'package:mc_common_app/config/routes.dart'; -import 'package:mc_common_app/extensions/int_extensions.dart'; -import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:mc_common_app/models/requests/offers_model.dart'; -import 'package:mc_common_app/models/requests/request_model.dart'; -import 'package:mc_common_app/theme/colors.dart'; -import 'package:mc_common_app/utils/navigator.dart'; -import 'package:mc_common_app/utils/utils.dart'; -import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; -import 'package:provider/provider.dart'; - -class RequestItem extends StatelessWidget { - final RequestModel request; - - RequestItem({required this.request}); - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Utils.statusContainerChip(text: request.requestStatusName, chipColor: Utils.getChipColorByRequestStatus(request.requestStatus)), - 6.height, - "${request.brand} ${request.model}".toText(fontSize: 16, isBold: true), - showItem("Model:", "${request.year}"), - showItem("Customer Name:", "${request.customerName}"), - ], - ), - ), - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (request.offerCount > 0) ...[ - Center( - child: "${request.offerCount}".toText( - color: Colors.white, - isBold: true, - fontSize: 10, - ), - ).toContainer( - backgroundColor: MyColors.redColor, - borderRadius: 100, - paddingAll: 1, - width: 20, - height: 20, - ), - ], - 2.height, - request.cityName.toText( - color: MyColors.lightTextColor, - ), - "9 Hours Ago".toText( - color: MyColors.lightTextColor, - ) - ], - ) - ], - ), - showItem("Description: ", request.description), - showItem("Price Range: ", ""), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - request.price.toString().toText( - fontSize: 20, - color: Colors.black, - isBold: true, - ), - 2.width, - "SAR" - .toText( - color: MyColors.lightTextColor, - fontSize: 10, - ) - .paddingOnly( - bottom: 3, - ), - ], - ), - Icon( - Icons.arrow_forward, - color: MyColors.darkIconColor, - size: 18, - ), - ], - ), - ], - ).toContainer(isShadowEnabled: true).onPress(() async { - List offers = await context.read().getOffersByRequest(requestId: request.id, context: context); - navigateWithName(context, AppRoutes.offersListPage, arguments: offers); - }); - } - - Widget showItem(String title, String value) { - return Row( - children: [ - title.toText( - color: MyColors.lightTextColor, - ), - 2.width, - value.toText( - isBold: true, - ), - ], - ); - } -} diff --git a/lib/views/requests/widget/request_status_chip.dart b/lib/views/requests/widget/request_status_chip.dart deleted file mode 100644 index 21db680..0000000 --- a/lib/views/requests/widget/request_status_chip.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:mc_common_app/models/requests/request_model.dart'; -import 'package:mc_common_app/theme/colors.dart'; -import 'package:mc_common_app/utils/enums.dart'; -import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; - -class RequestStatusChip extends StatelessWidget { - RequestModel request; - - RequestStatusChip(this.request); - - @override - Widget build(BuildContext context) { - return request.requestStatusName - .toText( - fontSize: 8, - color: Colors.white, - ) - .toContainer( - padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - backgroundColor: request.requestStatus == RequestStatus.pending - ? MyColors.adPendingStatusColor - : request.requestStatus == RequestStatus.cancelled - ? MyColors.redColor - : MyColors.greenColor, - borderRadius: 100, - ); - } -}