Untitled
unknown
dart
a year ago
18 kB
8
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