import 'package:common/localization/l10n_utils.dart';
import 'package:concierge/presentation/screens/confirm_order/widgets/confirm_order_product_list_tile.dart';
import 'package:concierge/presentation/screens/receipt/bloc/receipt_cubit.dart';
import 'package:concierge/presentation/widgets/padded_column.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';
class ReceiptCard extends StatelessWidget {
const ReceiptCard({super.key});
@override
Widget build(BuildContext context) {
final cubit = context.read<ReceiptCubit>();
return Container(
height: 500,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
clipBehavior: Clip.antiAlias,
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(
height: 200,
child: Stack(
alignment: Alignment.topLeft,
children: [
Image.network(
cubit.order.image.url,
width: double.infinity,
fit: BoxFit.fitWidth,
),
Padding(
padding: EdgeInsets.all(12),
child: Text(
"${context.strings.order_to_room} ${cubit.order.payment.room}",
style: TextStyle(fontSize: 20, color: Colors.white),
),
),
],
),
),
PaddedColumn(
padding: EdgeInsets.symmetric(horizontal: 12),
children: [
const Gap(16),
Text(
context.strings.order_status,
style: TextStyle(fontSize: 14, color: Colors.grey),
),
const Gap(8),
Text(context.strings.your_order_is_being_delivered),
const Gap(16),
Text(
context.strings.your_order_is_ready,
style: TextStyle(fontSize: 14, color: Colors.grey),
),
const Gap(4),
Text(cubit.order.estimatedDeliveryTime),
const Gap(16),
Row(
children: [
Icon(
Icons.restaurant_outlined,
color: Colors.grey,
size: 16,
),
Gap(4),
Text(
context.strings.your_order,
style: TextStyle(fontSize: 14, color: Colors.grey),
),
],
),
...buildOrder(context),
],
),
],
),
),
);
}
Iterable<Widget> buildOrder(BuildContext context) sync* {
final cubit = context.read<ReceiptCubit>();
yield Divider(color: Colors.grey.shade300);
for (final orderItem in cubit.order.orderItems) {
yield ConfirmOrderProductListTile(
quantity: orderItem.quantity,
price: orderItem.price.toDouble(),
title: orderItem.alternativeName,
);
yield Divider(color: Colors.grey.shade300);
}
}
}