Untitled

 avatar
unknown
dart
a year ago
8.7 kB
7
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/modules/hospitality/model/location_model.dart';
import 'package:takamol_user/app/modules/hospitality/restaurant/cart/controllers/cart_controller.dart';
import 'package:takamol_user/app/server/models/restaurants_orders_items.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/main.dart';
import 'package:takamol_user/resources/assets_generated.dart';
import 'package:takamol_user/resources/assets_svg_generated.dart';
import 'package:takamol_user/resources/strings_generated.dart';

class OrderDetailsPopup extends GetView<CartController> {
  final List<RestaurantOrderItem> restaurantOrderItems;
  final int restaurantOrderId;
  final LocationModel? orderLocation;

  const OrderDetailsPopup({
    required this.restaurantOrderItems,
    required this.restaurantOrderId,
    required this.orderLocation,
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        Container(
          decoration: BoxDecoration(
              color: appColors.whiteColor,
              boxShadow: [
                BoxShadow(
                  color: Colors.black.withOpacity(0.03),
                  offset: const Offset(0, 4),
                  spreadRadius: 10,
                  blurRadius: 10,
                ),
              ],
              borderRadius: BorderRadius.circular(14)),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              SizedBox(height: 10.h),
              Container(
                padding: const EdgeInsets.all(20),
                decoration: const BoxDecoration(
                  shape: BoxShape.circle,
                  border: Border(
                    top: BorderSide(color: Color(0xff2CCBB3), width: 0.5),
                    right: BorderSide(color: Color(0xff2CCBB3), width: 0.5),
                    left: BorderSide(color: Color(0xff2CCBB3), width: 0.5),
                  ),
                ),
                child: AppSVGAssets.getWidget(
                  'assets/svgs/icons/check_circle.svg',
                ),
              ),
              Align(
                alignment: Alignment.center,
                child: MainText(
                  text: AppStrings.orderSentSuccessfully,
                  fontWeight: FontWeight.w600,
                ).paddingSymmetric(vertical: 20.h),
              ),
              SizedBox(height: 10.h),
              Container(
                  width: Get.width,
                  margin: EdgeInsets.all(15.h),
                  padding:
                      EdgeInsets.symmetric(vertical: 16.h, horizontal: 10.w),
                  decoration: BoxDecoration(
                      color: Theme.of(context).colorScheme.secondary,
                      borderRadius: BorderRadius.circular(14)),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      MainText(
                        text: AppStrings.orderDetails,
                        fontWeight: FontWeight.w600,
                      ),
                      MainText(
                        text: '#${restaurantOrderId.toString()}',
                        fontWeight: FontWeight.w600,
                      ),
                    ],
                  )),
              ListView.builder(
                shrinkWrap: true,
                physics: const NeverScrollableScrollPhysics(),
                itemCount: restaurantOrderItems.length,
                itemBuilder: (context, index) {
                  return ListTile(
                      leading: ClipRRect(
                        borderRadius: BorderRadius.circular(15),
                        child: restaurantOrderItems[index].item!.image == null
                            ? const Image(
                                image: AppAssets.coffee,
                              )
                            : Image.network(
                                restaurantOrderItems[index].item!.image!,
                              ),
                      ),
                      trailing: Container(
                        decoration: BoxDecoration(
                            color: appColors.takamolColor.withOpacity(0.05),
                            shape: BoxShape.circle),
                        padding: const EdgeInsets.all(12),
                        child: MainText(
                          text: restaurantOrderItems[index].count.toString(),
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                      title: MainText(
                          text: restaurantOrderItems[index].item?.name ?? ''),
                      subtitle: Row(
                        children: [
                          if (restaurantOrderItems[index].itemSize != null) ...[
                            MainText(
                              text: AppStrings.size,
                              color: appColors.takamolFont2,
                            ),
                            const SizedBox(width: 4),
                            MainText(
                              text: controller.getSize(
                                  restaurantOrderItems[index].itemSize!),
                            ),
                          ],
                          if (restaurantOrderItems[index].item?.allowSugar ==
                              true) ...[
                            if (restaurantOrderItems[index].itemSize != null)
                              MainText(
                                text: " - ",
                                color: appColors.takamolFont2,
                              ),
                            const SizedBox(width: 4),
                            MainText(
                              text: AppStrings.sugar,
                              color: appColors.takamolFont2,
                            ),
                            const SizedBox(width: 4),
                            MainText(
                              text: restaurantOrderItems[index]
                                  .sugarSpoons
                                  .toString(),
                            ),
                          ],
                        ],
                      ).paddingOnly(top: 6));
                },
              ),
              SizedBox(height: 15.h)
            ],
          ),
        ),
        SizedBox(height: 20.h),
        Container(
          decoration: BoxDecoration(
            color: appColors.whiteColor,
            borderRadius: BorderRadius.circular(22.r),
            boxShadow: [
              BoxShadow(
                color: Colors.black.withOpacity(0.03),
                offset: const Offset(0, 4),
                spreadRadius: 10,
                blurRadius: 10,
              ),
            ],
          ),
          padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
          child: Container(
            padding: EdgeInsets.symmetric(horizontal: 4.w, vertical: 2.h),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(22.r),
              border: Border.all(
                color: appColors.borderGreyColor,
              ),
            ),
            child: ListTile(
              leading: CircleAvatar(
                  backgroundColor: Theme.of(context).colorScheme.secondary,
                  child: Icon(
                    Icons.location_on_outlined,
                    color: appColors.mediumGreyColor,
                  )),
              title: Text(
                orderLocation?.locationId == 1 ? 'مكتبي' : 'غرفة الاجتماعات',
                style: Theme.of(context).textTheme.labelSmall,
              ),
              subtitle: Text(
                orderLocation?.locationSubTitle ?? '',
                style: Theme.of(context)
                    .textTheme
                    .titleSmall
                    ?.copyWith(fontWeight: FontWeight.w400),
              ),
            ),
          ),
        ),
        SizedBox(height: 20.h),
      ],
    );
  }
}
Editor is loading...
Leave a Comment