Untitled
unknown
dart
7 months ago
18 kB
5
Indexable
import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:takamol_user/app/app_ui.dart'; import 'package:takamol_user/app/enums/enums.dart'; import 'package:takamol_user/app/modules/hospitality/current_order/controllers/hospitality_current_order_controller.dart'; import 'package:takamol_user/app/modules/hospitality/current_order/widget/cancel_order_widget.dart'; import 'package:takamol_user/app/modules/hospitality/current_order/widget/current_order_list.dart'; import 'package:takamol_user/app/utils/functions/app_functions.dart'; import 'package:takamol_user/app/widgets/back_button_widget.dart'; import 'package:takamol_user/app/widgets/bottom_sheet.dart'; import 'package:takamol_user/app/widgets/takamol/main_taxt.dart'; import 'package:takamol_user/app/widgets/takamol/takamol_button.dart'; import 'package:takamol_user/resources/assets_svg_generated.dart'; import 'package:takamol_user/resources/strings_generated.dart'; class HospitalityCurrentOrder extends GetView<HospitalityCurrentOrderController> { final BottomSheetWidget bottomSheet = BottomSheetWidget(); HospitalityCurrentOrder({ super.key, }); @override Widget build(BuildContext context) { HospitalityCurrentOrderController c = Get.find(); print('object'); print(c.restaurantOrder.status.toInt); final order = controller.restaurantOrder; return GetBuilder<HospitalityCurrentOrderController>(builder: (c) { return Scaffold( body: Stack( alignment: Alignment.bottomCenter, children: [ Container( color: const Color(0xffFCF2E0), child: Align( alignment: Alignment.topCenter, child: Container( padding: const EdgeInsets.all(60), decoration: BoxDecoration( shape: BoxShape.circle, gradient: LinearGradient( colors: [ appColors.whiteColor, appColors.whiteColor.withOpacity(0.1), ], begin: Alignment.bottomCenter, end: Alignment.topCenter, ), ), child: AppSVGAssets.getWidget( c.getOrderIcon(), color: appColors.orange, height: 60, ), ), ).paddingOnly(top: 150), ), SafeArea( child: Align( alignment: Alignment.topRight, child: BackButtonWidget( onTap: Get.back, backgroundColor: appColors.whiteColor, iconColor: appColors.blackColor, svgIcon: 'assets/svgs/icons/home.svg', ), ), ).paddingSymmetric(horizontal: 20, vertical: 12), // WaitApproveStage(), // WaitDriverStage(), bottomSheet.bottomSheetWidget( Container( padding: const EdgeInsets.all(16), decoration: const BoxDecoration( borderRadius: BorderRadius.vertical( top: Radius.circular(25), ), ), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ MainText( text: c.getOrderType(), fontSize: 14, ), if (c.restaurantOrder.serialNo != null) ...[ MainText( text: '#${c.restaurantOrder.serialNo}', fontSize: 14, ), ], ], ), SizedBox( height: 16.h, ), Container( decoration: BoxDecoration( color: appColors.lightGreyColor, borderRadius: BorderRadius.circular(15), ), child: Padding( padding: const EdgeInsets.all(16.0), child: Row( children: [ AppSVGAssets.getWidget( 'assets/svgs/icons/chef.svg', ), SizedBox( width: 12.h, ), MainText( text: c.restaurantOrder.waiter?.name ?? AppStrings.waitingForOrderWaiter, ), ], ), ), ), SizedBox( height: 16.h, ), if (c.restaurantOrder.status == OrderStatus.canceled) ...[ Center( child: MainText( text: AppStrings.canceledOrder, fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.instanse.red, ), ), if (c.restaurantOrder.rejectedReason?.reason != null) ...[ SizedBox( height: 6.h, ), Center( child: MainText( text: c.restaurantOrder.rejectedReason!.reason!, fontSize: 16, ), ), ], ], if (c.restaurantOrder.status != OrderStatus.canceled) OrderStatusStepper( orderStatus: c.restaurantOrder.status.toInt ?? 0, ), SizedBox( height: 16.h, ), Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), border: Border.all(color: appColors.lightGreyColor), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (c.restaurantOrder.status != OrderStatus.canceled) ...[ Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: appColors.takamolgrey, shape: BoxShape.circle, ), child: AppSVGAssets.getWidget( 'assets/svgs/icons/clock1.svg', ), ), SizedBox( width: 12.w, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ MainText( text: AppStrings .expectedDateForOrderDelivery, color: appColors.mediumGreyColor, fontSize: 14, ), SizedBox( height: 4.h, ), MainText( text: c.getOrderEstimatedTime(), color: appColors.blackColor, fontSize: 14, ), ], ), ], ), const Divider( height: 24, ), ], Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: appColors.takamolgrey, shape: BoxShape.circle, ), child: AppSVGAssets.getWidget( 'assets/svgs/icons/marker.svg', ), ), SizedBox( width: 12.w, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ MainText( text: AppStrings.deliverOrderTo, color: appColors.mediumGreyColor, fontSize: 14, ), SizedBox( height: 4.h, ), FittedBox( child: MainText( text: controller.getOrderLocation(), color: appColors.blackColor, fontSize: 14, ), ), ], ), ], ), ], ), ), if (c.restaurantOrder.items.isNotEmpty) ...[ SizedBox( height: 16.h, ), CurrentOrderList( items: c.restaurantOrder.items, ), ], SizedBox( height: 16.h, ), Builder( builder: (context) { if (c.restaurantOrder.status == OrderStatus.pending) { return Column( mainAxisSize: MainAxisSize.min, children: [ TakamolButton( onPressed: () => AppFunctions().openAppBottomSheet( title: AppStrings.cancelReason, horizontalPadding: 0, verticalPadding: 0, body: const CancelOrderWidget(), ), text: AppStrings.cancelOrder, width: Get.width, height: Get.width * 0.14, color: Colors.red.withOpacity(0.05), textColor: appColors.red, fontSize: 16, fontWeight: FontWeight.bold, ), ], ); } return const SizedBox(); }, ), ], ), ), ), ), ], ), // floatingActionButtonLocation: FloatingActionButtonLocation.miniCenterDocked, // floatingActionButton: ); }); } } // ignore: must_be_immutable class OrderStatusStepper extends StatelessWidget { const OrderStatusStepper({ super.key, required this.orderStatus, }); final int orderStatus; @override Widget build(BuildContext context) { return Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Builder( builder: (_) => orderStatus < 0 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/grey_point.svg'), ) : orderStatus == 0 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/orange_point.svg'), ) : orderStatus > 0 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/check.svg', width: 16), ) : Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/grey_point.svg'), ), ), const Expanded( child: Divider( thickness: 1.5, color: Color(0xffECECEC), ), ), Builder( builder: (_) => orderStatus < 2 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/grey_point.svg'), ) : orderStatus == 2 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/orange_point.svg'), ) : orderStatus > 2 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/check.svg', width: 16), ) : Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/grey_point.svg'), ), ), const Expanded( child: Divider( thickness: 1.5, color: Color(0xffECECEC), ), ), Builder( builder: (_) => orderStatus == 5 ? Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/check.svg', width: 16), ) : Transform.scale( scale: 1.2, child: AppSVGAssets.getWidget( 'assets/svgs/icons/grey_point.svg'), ), ), ], ).paddingSymmetric(horizontal: 24), SizedBox(height: 8.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ MainText( text: AppStrings.pending, fontSize: 14, ), MainText( text: AppStrings.preparing, fontSize: 14, ), MainText( text: AppStrings.delivered, fontSize: 14, ), ], ), ], ); } }
Editor is loading...
Leave a Comment