import 'package:after_layout/after_layout.dart'; import 'package:diplomaticquarterapp/core/model/packages_offers/requests/AddProductToCartRequestModel.dart'; import 'package:diplomaticquarterapp/core/model/packages_offers/responses/PackagesResponseModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/packages_offers/PackagesOffersViewModel.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart' as utils; import 'package:diplomaticquarterapp/widgets/offers_packages/PackagesOfferCard.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'CreateCustomerDailogPage.dart'; dynamic languageID; class ClinicPackagesPage extends StatefulWidget { List products; ClinicPackagesPage({@required this.products}); @override _ClinicPackagesPageState createState() => _ClinicPackagesPageState(); } class _ClinicPackagesPageState extends State with AfterLayoutMixin { AppScaffold appScaffold; List get _products => widget.products; PackagesViewModel viewModel; onProductCartClick(PackagesResponseModel product) async { if (viewModel.service.customer == null) viewModel.service.customer = await CreateCustomerDialogPage(context: context).show(); if (viewModel.service.customer != null) { var request = AddProductToCartRequestModel(product_id: product.id, customer_id: viewModel.service.customer.id); await viewModel.service.addProductToCart(request, context: context).then((response) { // appScaffold.appBar.badgeUpdater(viewModel.service.cartItemCount); }).catchError((error) { utils.Utils.showErrorToast(error); }); } } @override void afterFirstLayout(BuildContext context) async { // appScaffold.appBar.badgeUpdater(viewModel.service.cartItemCount); } @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return BaseView( allowAny: true, onModelReady: (model) { viewModel = model; }, builder: (_, model, wi) => appScaffold = AppScaffold( appBarTitle: TranslationBase.of(context).offerAndPackages, isShowAppBar: true, isPharmacy: false, showPharmacyCart: false, showHomeAppBarIcon: false, isOfferPackages: true, showOfferPackagesCart: true, isShowDecPage: false, showNewAppBar: true, showNewAppBarTitle: true, body: Padding( padding: const EdgeInsets.all(12), child: StaggeredGridView.countBuilder( crossAxisCount: 4, itemCount: _products.length, itemBuilder: (BuildContext context, int index) => new Container( color: Colors.transparent, child: PackagesItemCard( itemContentPadding: 10, itemModel: _products[index], onCartClick: onProductCartClick, )), staggeredTileBuilder: (int index) => StaggeredTile.fit(2), mainAxisSpacing: 20, crossAxisSpacing: 10, )), ), ); } }