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/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'; 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/general_models/generic_resp_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/payment_view_model.dart'; import 'package:mc_common_app/view_models/subscriptions_view_model.dart'; import 'package:mc_common_app/widgets/bottom_sheet.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/tab/menu_tabs.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; class SubscriptionsPage extends StatefulWidget { const SubscriptionsPage({Key? key}) : super(key: key); @override State createState() => _SubscriptionsPageState(); } class _SubscriptionsPageState extends State { @override void initState() { super.initState(); scheduleMicrotask(() { context.read().getSubscriptionBySP( AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true, ); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: CustomAppBar( title: LocaleKeys.subscriptions.tr(), ), body: SizedBox( width: double.infinity, height: double.infinity, child: Consumer(builder: (context, subcriptionsVM, _) { return subcriptionsVM.state == ViewState.busy ? const Center(child: CircularProgressIndicator()) : SingleChildScrollView( child: Column( children: [ 21.height, MenuTabs( subcriptionsVM.monthlyTabs, selectedColor: MyColors.primaryColor, onSelected: (DropValue selectedValue, int index) { subcriptionsVM.selectedMonthlyTab = selectedValue; subcriptionsVM.monthlyTabs.forEach((element) => element.isEnabled = false); subcriptionsVM.monthlyTabs[index].isEnabled = true; subcriptionsVM.filterSubscriptions(); subcriptionsVM.setState(ViewState.idle); }, ), 21.height, ListView.separated( itemBuilder: (BuildContext context, int index) { return AllSubscriptionsCard( subcriptionsVM.tempSubscriptions[index], isSubscribed: subcriptionsVM.tempSubscriptions[index].isSubscribed ?? false, onRenewSubscriptionClick: () async { GenericRespModel response = await subcriptionsVM.createSubscriptionOrder(subcriptionsVM.tempSubscriptions[index].id ?? 0, true, true); if (response.data != null) { context.read().updateOrderProviderSubscriptionId(id: response.data ?? 0); navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription); } }, onUpgradeSubscriptionClick: () { showMyBottomSheet(context, child: UpgradePackageSheet(subcriptionsVM.tempSubscriptions[index], false)); }, onDowngradeSubscriptionClick: () { showMyBottomSheet(context, child: DowngradeDataSheet(subcriptionsVM.tempSubscriptions[index])); }, ); }, separatorBuilder: (BuildContext context, int index) { return 21.height; }, physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: subcriptionsVM.tempSubscriptions.length, ), 21.height, ], ), ); }), ), ); } }