From b78aeb8002a05947d0d0fb4938bc90b29b3d25cc Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" <> Date: Wed, 24 Jul 2024 09:25:58 +0300 Subject: [PATCH] fixes --- ios/Runner.xcodeproj/project.pbxproj | 12 +- .../xcshareddata/xcschemes/Runner.xcscheme | 15 +- ios/Runner/AppDelegate.swift | 2 + ios/Runner/Info.plist | 28 ++-- lib/config/provider_routes.dart | 2 +- .../add_new_service_appointment_page.dart | 2 +- .../appoinments/merge_appointment_page.dart | 2 +- .../appoinments/update_appointment_page.dart | 5 +- lib/views/dashboard/dashboard_page.dart | 18 ++- .../dashboard/fragments/home_fragment.dart | 28 ++-- lib/views/location/pick_location_page.dart | 15 +- ..._page.dart => all_subscriptions_page.dart} | 4 +- .../subscriptions/my_subscritions_page.dart | 24 ++-- ..._card.dart => all_subscriptions_card.dart} | 4 +- .../widget/my_subscriptions_card.dart | 133 ++++++++++++++++++ pubspec.yaml | 2 +- 16 files changed, 219 insertions(+), 77 deletions(-) rename lib/views/subscriptions/{subscriptions_page.dart => all_subscriptions_page.dart} (96%) rename lib/views/subscriptions/widget/{subscriptions_card.dart => all_subscriptions_card.dart} (98%) create mode 100644 lib/views/subscriptions/widget/my_subscriptions_card.dart diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a0f1406..0752838 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -376,14 +376,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = CK4WN356P5; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderApp; + PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -504,14 +504,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = CK4WN356P5; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderApp; + PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -527,14 +527,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = CK4WN356P5; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderApp; + PRODUCT_BUNDLE_IDENTIFIER = com.example.carProviderAppp; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e67b280..8b3e7d0 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -27,8 +27,6 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - + + - - + + + + Bool { + GMSServices.provideAPIKey("AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index f04971b..fd96eda 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -22,6 +24,22 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + NSAppleMusicUsageDescription + Access to pick a photo + NSCameraUsageDescription + Access to take a photo by camera + NSPhotoLibraryUsageDescription + Access to pick a photo + NSFaceIDUsageDescription + This app requires Face ID to allow biometric authentication for app login. + NSLocationAlwaysAndWhenInUseUsageDescription + This App requires access to your location to pick the location. + NSLocationAlwaysUsageDescription + This App requires access to your location to pick the location. + NSLocationWhenInUseUsageDescription + This App requires access to your location to pick the location. + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -41,15 +59,5 @@ UIViewControllerBasedStatusBarAppearance - NSCameraUsageDescription - Access to take a photo by camera - NSAppleMusicUsageDescription - Access to pick a photo - NSPhotoLibraryUsageDescription - Access to pick a photo - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/lib/config/provider_routes.dart b/lib/config/provider_routes.dart index 502f739..40cde9d 100644 --- a/lib/config/provider_routes.dart +++ b/lib/config/provider_routes.dart @@ -18,7 +18,7 @@ import 'package:car_provider_app/views/settings/services/duplication/sheet/appro import 'package:car_provider_app/views/settings/services/items_list_page.dart'; import 'package:car_provider_app/views/settings/services/services_list_page.dart'; import 'package:car_provider_app/views/subscriptions/my_subscritions_page.dart'; -import 'package:car_provider_app/views/subscriptions/subscriptions_page.dart'; +import 'package:car_provider_app/views/subscriptions/all_subscriptions_page.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/appoinments/add_new_service_appointment_page.dart b/lib/views/appoinments/add_new_service_appointment_page.dart index 6ed4f4b..ce553e6 100644 --- a/lib/views/appoinments/add_new_service_appointment_page.dart +++ b/lib/views/appoinments/add_new_service_appointment_page.dart @@ -255,7 +255,7 @@ class _AddNewServiceAppointmentPageState extends State().getMyAppointmentsForProvider({ "ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", "ProviderBranchID": branchId.toString(), - }, isNeedToRebuild: true); + },); } double calculatePrice() { diff --git a/lib/views/appoinments/merge_appointment_page.dart b/lib/views/appoinments/merge_appointment_page.dart index ead4e59..1253c78 100644 --- a/lib/views/appoinments/merge_appointment_page.dart +++ b/lib/views/appoinments/merge_appointment_page.dart @@ -156,6 +156,6 @@ class MergeAppointmentListPage extends StatelessWidget { .toString() ?? "0", "ProviderBranchID": branchId.toString(), - }, isNeedToRebuild: true); + }); } } diff --git a/lib/views/appoinments/update_appointment_page.dart b/lib/views/appoinments/update_appointment_page.dart index 317bdcf..1ecd4c3 100644 --- a/lib/views/appoinments/update_appointment_page.dart +++ b/lib/views/appoinments/update_appointment_page.dart @@ -21,7 +21,6 @@ import 'package:provider/provider.dart'; import '../dashboard/widget/appointment_slider_widget.dart'; import 'package:easy_localization/easy_localization.dart'; - class UpdateAppointmentPage extends StatelessWidget { late AppointmentListModel appointmentListModel; @@ -30,7 +29,7 @@ class UpdateAppointmentPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: CustomAppBar( + appBar: CustomAppBar( title: LocaleKeys.updateAppointment.tr(), ), body: SizedBox( @@ -266,6 +265,6 @@ class UpdateAppointmentPage extends StatelessWidget { await context.read().getMyAppointmentsForProvider({ "ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", "ProviderBranchID": branchId.toString(), - }, isNeedToRebuild: true); + }); } } diff --git a/lib/views/dashboard/dashboard_page.dart b/lib/views/dashboard/dashboard_page.dart index 023abf9..3282827 100644 --- a/lib/views/dashboard/dashboard_page.dart +++ b/lib/views/dashboard/dashboard_page.dart @@ -25,6 +25,7 @@ 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'; @@ -49,20 +50,15 @@ class _DashboardPageState extends State { dashboardVM = Provider.of(context, listen: false); context.read().populateRequestsFilterList(); context.read().populateAppointmentsFilterList(); - _onRefresh(); + scheduleMicrotask(() => _onRefresh()); } Future _onRefresh() async { final requestsVM = context.read(); - // final chatVM = context.read(); - // context.read().populateAdsFilterList(); - context.read().getBranchAndServices(); + await context.read().getBranchAndServices(); AdVM adVm = Provider.of(context, listen: false); - // context.read().myUpComingAppointments, - AppointmentsVM appointmentsVM = Provider.of(context, listen: false); - if (appointmentsVM.myAppointments.isEmpty) { - await appointmentsVM.getMyAppointmentsForProvider({"ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0"}); - } + 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(); @@ -82,11 +78,13 @@ class _DashboardPageState extends State { if (requestsVM.myRequests.isEmpty) { await requestsVM.getRequests(appType: AppType.provider); } + if (sVM.mySubscriptionsBySp.isEmpty) { + await sVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + } // await chatVM.buildHubConnection(context); } - @override Widget build(BuildContext context) { List fragments = [ diff --git a/lib/views/dashboard/fragments/home_fragment.dart b/lib/views/dashboard/fragments/home_fragment.dart index f477e37..ee13c53 100644 --- a/lib/views/dashboard/fragments/home_fragment.dart +++ b/lib/views/dashboard/fragments/home_fragment.dart @@ -1,3 +1,5 @@ +import 'package:car_provider_app/config/provider_routes.dart'; +import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:car_provider_app/views/dashboard/widget/my_service_provider.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -5,11 +7,13 @@ import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/appointments_models/appointment_list_model.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/service_view_model.dart'; import 'package:mc_common_app/views/advertisement/ads_list.dart'; import 'package:mc_common_app/views/appointments/widgets/customer_appointment_slider_widget.dart'; @@ -20,7 +24,6 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; - import '../widget/appointment_slider_widget.dart'; class HomeFragment extends StatelessWidget { @@ -64,28 +67,29 @@ class HomeFragment extends StatelessWidget { onRefresh: onRefresh, child: ListView( children: [ + 10.height, ViewAllWidget( - title: LocaleKeys.upcoming_appointment.tr(), - subTitle: LocaleKeys.view_all.tr(), - onSubtitleTapped: () {}, - ).horPaddingMain(), + title: LocaleKeys.upcoming_appointment.tr(), + subTitle: LocaleKeys.view_all.tr(), + onSubtitleTapped: () { + context.read().updateIndex(1); + }).horPaddingMain(), // const AppointmentSliderWidget().horPaddingMain(), CustomerAppointmentSliderWidget( - myUpComingAppointments: context.read().myUpComingAppointments, - isNeedToShowEmptyMessage: true, - onAppointmentClick: () { - // navigateWithName( - // context, ProviderAppRoutes.appointment, - // arguments: branches[index]); + onAppointmentClick: (AppointmentListModel value) { + navigateWithName(context, ProviderAppRoutes.appointmentDetailList, arguments: value); }, ), 21.height, ViewAllWidget( title: LocaleKeys.myBranches.tr(), subTitle: LocaleKeys.view_all.tr(), - onSubtitleTapped: () {}, + onSubtitleTapped: () { + context.read().updateIndex(0); + }, ).horPaddingMain(), const ServiceProviderWidget().horPaddingMain(), + Consumer( builder: (BuildContext context, AdVM adVM, Widget? child) { if (adVM.state == ViewState.busy) { diff --git a/lib/views/location/pick_location_page.dart b/lib/views/location/pick_location_page.dart index 99f0004..72105d3 100644 --- a/lib/views/location/pick_location_page.dart +++ b/lib/views/location/pick_location_page.dart @@ -13,6 +13,7 @@ import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:permission_handler/permission_handler.dart'; import 'map_selection_widget.dart'; +import 'package:geocoding/geocoding.dart'; class PickLocationPage extends StatefulWidget { Function(double, double, String) onPickAddress; @@ -122,6 +123,8 @@ class _PickLocationPageState extends State { Future _updatePosition(CameraPosition _position) async { latitude = _position.target.latitude; longitude = _position.target.longitude; + print(latitude); + print(latitude); updateAddress(latitude, longitude); } @@ -137,8 +140,7 @@ class _PickLocationPageState extends State { requestPermissions().then( (value) async { if (value[Permission.location]!.isGranted) { - var position = - await GeolocatorPlatform.instance.getCurrentPosition(); + var position = await GeolocatorPlatform.instance.getCurrentPosition(); currentPostion = LatLng(position.latitude, position.longitude); latitude = position.latitude; longitude = position.longitude; @@ -151,11 +153,8 @@ class _PickLocationPageState extends State { } updateAddress(double latitude, double longitude) async { - // List placemarks = - // await placemarkFromCoordinates(latitude, longitude); - // _counter.value = - // '${placemarks.first.street}, ${placemarks.first.subLocality}, ${placemarks.first.locality}, ${placemarks.first.postalCode}, ${placemarks.first.country}'; - // print("Address121: " + placemarks[0].toString()); + List placemarks = await placemarkFromCoordinates(latitude, longitude); + _counter.value = '${placemarks.first.street}, ${placemarks.first.subLocality}, ${placemarks.first.locality}, ${placemarks.first.postalCode}, ${placemarks.first.country}'; } setMap() { @@ -176,6 +175,6 @@ class _PickLocationPageState extends State { } Future> requestPermissions() async { - var permissionResults = [Permission.calendar].request(); + var permissionResults = [Permission.location].request(); return permissionResults; } diff --git a/lib/views/subscriptions/subscriptions_page.dart b/lib/views/subscriptions/all_subscriptions_page.dart similarity index 96% rename from lib/views/subscriptions/subscriptions_page.dart rename to lib/views/subscriptions/all_subscriptions_page.dart index 48d4b45..865cfcd 100644 --- a/lib/views/subscriptions/subscriptions_page.dart +++ b/lib/views/subscriptions/all_subscriptions_page.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:car_provider_app/views/subscriptions/sheet/downgrade_data_sheet.dart'; import 'package:car_provider_app/views/subscriptions/sheet/upgrade_package_sheet.dart'; -import 'package:car_provider_app/views/subscriptions/widget/subscriptions_card.dart'; +import 'package:car_provider_app/views/subscriptions/widget/all_subscriptions_card.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/config/routes.dart'; @@ -68,7 +68,7 @@ class _SubscriptionsPageState extends State { 21.height, ListView.separated( itemBuilder: (BuildContext context, int index) { - return SubscriptionsCard( + return AllSubscriptionsCard( model.tempSubscriptions[index], isSubscribed: model.tempSubscriptions[index].isSubscribed ?? false, isMainPage: false, diff --git a/lib/views/subscriptions/my_subscritions_page.dart b/lib/views/subscriptions/my_subscritions_page.dart index 0798eb3..7ff6815 100644 --- a/lib/views/subscriptions/my_subscritions_page.dart +++ b/lib/views/subscriptions/my_subscritions_page.dart @@ -2,7 +2,8 @@ import 'dart:developer'; import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/views/subscriptions/sheet/select_package_sheet.dart'; -import 'package:car_provider_app/views/subscriptions/widget/subscriptions_card.dart'; +import 'package:car_provider_app/views/subscriptions/widget/all_subscriptions_card.dart'; +import 'package:car_provider_app/views/subscriptions/widget/my_subscriptions_card.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/config/routes.dart'; @@ -27,10 +28,10 @@ class MySubscriptionsPage extends StatelessWidget { @override Widget build(BuildContext context) { - context.read().getMySubscriptions(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + context.read().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); return Scaffold( appBar: const CustomAppBar( - title: "My Subscriptions", + title: "My Subscription", ), body: SizedBox( width: double.infinity, @@ -47,18 +48,14 @@ class MySubscriptionsPage extends StatelessWidget { 21.height, ListView.separated( itemBuilder: (BuildContext context, int index) { - return SubscriptionsCard( - model.allSubscriptions.data![index], - isSubscribed: model.allSubscriptions.data![index].isSubscribed ?? false, + return MySubscriptionsCard( + model.mySubscriptionsBySp[index], + isSubscribed: false, backgroundColor: MyColors.darkIconColor, + isMainPage: model.mySubscriptionsBySp[index].isExpired ?? false, onRenewSubscriptionClick: () async { Utils.showLoading(context); - MResponse response = await model.createSubscriptionOrder( - model.allSubscriptions.data![index].id ?? 0, - true, - true, - model.allSubscriptions.data![index].price.toString(), - ); + MResponse response = await model.createSubscriptionOrder(model.mySubscriptionsBySp[index].subscriptionID ?? 0, true, true); Utils.hideLoading(context); if (response.data != null) { log("response.data: ${response.data}"); @@ -81,7 +78,7 @@ class MySubscriptionsPage extends StatelessWidget { }, physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, - itemCount: model.allSubscriptions.data!.length, + itemCount: model.mySubscriptionsBySp.length, ), 21.height, ], @@ -102,7 +99,6 @@ class MySubscriptionsPage extends StatelessWidget { ], ), ), - ); } } diff --git a/lib/views/subscriptions/widget/subscriptions_card.dart b/lib/views/subscriptions/widget/all_subscriptions_card.dart similarity index 98% rename from lib/views/subscriptions/widget/subscriptions_card.dart rename to lib/views/subscriptions/widget/all_subscriptions_card.dart index 237c44f..c107c82 100644 --- a/lib/views/subscriptions/widget/subscriptions_card.dart +++ b/lib/views/subscriptions/widget/all_subscriptions_card.dart @@ -7,7 +7,7 @@ import 'package:mc_common_app/utils/date_helper.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; -class SubscriptionsCard extends StatelessWidget { +class AllSubscriptionsCard extends StatelessWidget { Subscription subscription; bool isSubscribed; Color? backgroundColor; @@ -15,7 +15,7 @@ class SubscriptionsCard extends StatelessWidget { Function onRenewSubscriptionClick; bool isMainPage; - SubscriptionsCard(this.subscription, + AllSubscriptionsCard(this.subscription, {Key? key, this.isSubscribed = false, this.backgroundColor, diff --git a/lib/views/subscriptions/widget/my_subscriptions_card.dart b/lib/views/subscriptions/widget/my_subscriptions_card.dart new file mode 100644 index 0000000..216718a --- /dev/null +++ b/lib/views/subscriptions/widget/my_subscriptions_card.dart @@ -0,0 +1,133 @@ +import 'package:flutter/material.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/subscriptions_models/provider_subscription_model.dart'; +import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; +import 'package:mc_common_app/theme/colors.dart'; +import 'package:mc_common_app/utils/date_helper.dart'; +import 'package:mc_common_app/utils/enums.dart'; +import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; + +class MySubscriptionsCard extends StatelessWidget { + ProviderSubscriptionModel providerSubscriptionModel; + bool isSubscribed; + Color? backgroundColor; + late Color textColor; + Function onRenewSubscriptionClick; + bool isMainPage; + + MySubscriptionsCard(this.providerSubscriptionModel, {Key? key, this.isSubscribed = false, this.backgroundColor, required this.onRenewSubscriptionClick, this.isMainPage = true}) : super(key: key); + + @override + Widget build(BuildContext context) { + textColor = backgroundColor == null ? Colors.black : Colors.white; + return InkWell( + onTap: isSubscribed + ? null + : () { + onRenewSubscriptionClick(); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: providerSubscriptionModel.subscriptionName.toString().toText( + fontSize: 18, + color: textColor, + ), + ), + if (providerSubscriptionModel.isActive!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: FontWeight.bold), + 5.width, + if (providerSubscriptionModel.isUpgradeNow!) + "Upgrade".toText(color: Colors.white).toContainer( + backgroundColor: MyColors.primaryColor, + borderRadius: 30, + padding: const EdgeInsets.symmetric( + horizontal: 6, + vertical: 3, + ), + ) + ], + ), + 6.height, + showItem("Ads:", providerSubscriptionModel.adsRemaining.toString()), + showItem("Users:", providerSubscriptionModel.subUsersRemaining.toString()), + showItem("Branches:", providerSubscriptionModel.branchesRemaining.toString()), + 14.height, + // Row( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + // Expanded( + // child: Row( + // mainAxisAlignment: MainAxisAlignment.start, + // crossAxisAlignment: CrossAxisAlignment.end, + // children: [ + // "10000".toString().toText( + // fontSize: 26, + // isBold: true, + // color: textColor, + // ), + // 2.width, + // " SAR/Month".toText( + // color: MyColors.lightTextColor, + // fontSize: 16, + // ), + // ], + // ), + // ), + // ], + // ), + Row( + children: [ + "Expires on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText( + fontSize: 14, + color: textColor, + ), + if (!providerSubscriptionModel.isTrialSubscription!) + Row( + children: [ + 6.width, + "Renew".toText( + color: MyColors.primaryColor, + fontSize: 14, + textDecoration: TextDecoration.underline, + decorationColor: MyColors.primaryColor, + isBold: true, + ), + ], + ).onPress(() { + onRenewSubscriptionClick(); + }), + ], + ) + ], + ).toWhiteContainer( + width: double.infinity, + allPading: 12, + backgroundColor: backgroundColor, + margin: const EdgeInsets.symmetric( + horizontal: 21, + ), + ), + ); + } + + Widget showItem(String title, String value) { + return Row( + children: [ + title.toText( + fontSize: 14, + color: textColor, + ), + 2.width, + value.toText( + fontSize: 14, + color: textColor, + ), + ], + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 5348ee8..c9d71d3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,7 +40,7 @@ dependencies: # path: C:/Users/mirza.shafique/AndroidStudioProjects/mc_common_app mc_common_app: - path: /Volumes/Data/Projects/Flutter/car_common_app + path: /Users/amir/StudioProjects/car_common_app