Success Split Bill Page

This commit is contained in:
efrilm 2025-11-01 03:24:39 +07:00
parent 35f02e6b76
commit fecb4fb5c1
13 changed files with 862 additions and 156 deletions

View File

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:dartz/dartz.dart' hide Order; import 'package:dartz/dartz.dart' hide Order;
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.dart';
@ -89,6 +91,8 @@ class PaymentFormBloc extends Bloc<PaymentFormEvent, PaymentFormState> {
.toList(), .toList(),
); );
log(request.toString());
failureOrPayment = await _repository.createSplitBill(request); failureOrPayment = await _repository.createSplitBill(request);
emit( emit(

View File

@ -20,7 +20,7 @@ mixin _$SplitBillFormEvent {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -29,7 +29,7 @@ mixin _$SplitBillFormEvent {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -38,7 +38,7 @@ mixin _$SplitBillFormEvent {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -180,7 +180,7 @@ class _$SetOrderImpl implements _SetOrder {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -193,7 +193,7 @@ class _$SetOrderImpl implements _SetOrder {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -206,7 +206,7 @@ class _$SetOrderImpl implements _SetOrder {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -282,9 +282,9 @@ abstract class _$$CustomerChangedImplCopyWith<$Res> {
$Res Function(_$CustomerChangedImpl) then, $Res Function(_$CustomerChangedImpl) then,
) = __$$CustomerChangedImplCopyWithImpl<$Res>; ) = __$$CustomerChangedImplCopyWithImpl<$Res>;
@useResult @useResult
$Res call({Customer customer}); $Res call({Customer? customer});
$CustomerCopyWith<$Res> get customer; $CustomerCopyWith<$Res>? get customer;
} }
/// @nodoc /// @nodoc
@ -300,13 +300,13 @@ class __$$CustomerChangedImplCopyWithImpl<$Res>
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@override @override
$Res call({Object? customer = null}) { $Res call({Object? customer = freezed}) {
return _then( return _then(
_$CustomerChangedImpl( _$CustomerChangedImpl(
null == customer freezed == customer
? _value.customer ? _value.customer
: customer // ignore: cast_nullable_to_non_nullable : customer // ignore: cast_nullable_to_non_nullable
as Customer, as Customer?,
), ),
); );
} }
@ -315,8 +315,12 @@ class __$$CustomerChangedImplCopyWithImpl<$Res>
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$CustomerCopyWith<$Res> get customer { $CustomerCopyWith<$Res>? get customer {
return $CustomerCopyWith<$Res>(_value.customer, (value) { if (_value.customer == null) {
return null;
}
return $CustomerCopyWith<$Res>(_value.customer!, (value) {
return _then(_value.copyWith(customer: value)); return _then(_value.copyWith(customer: value));
}); });
} }
@ -328,7 +332,7 @@ class _$CustomerChangedImpl implements _CustomerChanged {
const _$CustomerChangedImpl(this.customer); const _$CustomerChangedImpl(this.customer);
@override @override
final Customer customer; final Customer? customer;
@override @override
String toString() { String toString() {
@ -362,7 +366,7 @@ class _$CustomerChangedImpl implements _CustomerChanged {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -375,7 +379,7 @@ class _$CustomerChangedImpl implements _CustomerChanged {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -388,7 +392,7 @@ class _$CustomerChangedImpl implements _CustomerChanged {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -446,10 +450,10 @@ class _$CustomerChangedImpl implements _CustomerChanged {
} }
abstract class _CustomerChanged implements SplitBillFormEvent { abstract class _CustomerChanged implements SplitBillFormEvent {
const factory _CustomerChanged(final Customer customer) = const factory _CustomerChanged(final Customer? customer) =
_$CustomerChangedImpl; _$CustomerChangedImpl;
Customer get customer; Customer? get customer;
/// Create a copy of SplitBillFormEvent /// Create a copy of SplitBillFormEvent
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@ -533,7 +537,7 @@ class _$CustomerNameChangedImpl implements _CustomerNameChanged {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -546,7 +550,7 @@ class _$CustomerNameChangedImpl implements _CustomerNameChanged {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -559,7 +563,7 @@ class _$CustomerNameChangedImpl implements _CustomerNameChanged {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -704,7 +708,7 @@ class _$SplitTypeChangedImpl implements _SplitTypeChanged {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -717,7 +721,7 @@ class _$SplitTypeChangedImpl implements _SplitTypeChanged {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -730,7 +734,7 @@ class _$SplitTypeChangedImpl implements _SplitTypeChanged {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -885,7 +889,7 @@ class _$ItemQuantityChangedImpl implements _ItemQuantityChanged {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -898,7 +902,7 @@ class _$ItemQuantityChangedImpl implements _ItemQuantityChanged {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -911,7 +915,7 @@ class _$ItemQuantityChangedImpl implements _ItemQuantityChanged {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,
@ -1055,7 +1059,7 @@ class _$AmountChangedImpl implements _AmountChanged {
@optionalTypeArgs @optionalTypeArgs
TResult when<TResult extends Object?>({ TResult when<TResult extends Object?>({
required TResult Function(Order order) setOrder, required TResult Function(Order order) setOrder,
required TResult Function(Customer customer) customerChanged, required TResult Function(Customer? customer) customerChanged,
required TResult Function(String customerName) customerNameChanged, required TResult Function(String customerName) customerNameChanged,
required TResult Function(SplitType splitType) splitTypeChanged, required TResult Function(SplitType splitType) splitTypeChanged,
required TResult Function(String itemId, int quantity) itemQuantityChanged, required TResult Function(String itemId, int quantity) itemQuantityChanged,
@ -1068,7 +1072,7 @@ class _$AmountChangedImpl implements _AmountChanged {
@optionalTypeArgs @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({ TResult? whenOrNull<TResult extends Object?>({
TResult? Function(Order order)? setOrder, TResult? Function(Order order)? setOrder,
TResult? Function(Customer customer)? customerChanged, TResult? Function(Customer? customer)? customerChanged,
TResult? Function(String customerName)? customerNameChanged, TResult? Function(String customerName)? customerNameChanged,
TResult? Function(SplitType splitType)? splitTypeChanged, TResult? Function(SplitType splitType)? splitTypeChanged,
TResult? Function(String itemId, int quantity)? itemQuantityChanged, TResult? Function(String itemId, int quantity)? itemQuantityChanged,
@ -1081,7 +1085,7 @@ class _$AmountChangedImpl implements _AmountChanged {
@optionalTypeArgs @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({ TResult maybeWhen<TResult extends Object?>({
TResult Function(Order order)? setOrder, TResult Function(Order order)? setOrder,
TResult Function(Customer customer)? customerChanged, TResult Function(Customer? customer)? customerChanged,
TResult Function(String customerName)? customerNameChanged, TResult Function(String customerName)? customerNameChanged,
TResult Function(SplitType splitType)? splitTypeChanged, TResult Function(SplitType splitType)? splitTypeChanged,
TResult Function(String itemId, int quantity)? itemQuantityChanged, TResult Function(String itemId, int quantity)? itemQuantityChanged,

View File

@ -3,7 +3,7 @@ part of 'split_bill_form_bloc.dart';
@freezed @freezed
class SplitBillFormEvent with _$SplitBillFormEvent { class SplitBillFormEvent with _$SplitBillFormEvent {
const factory SplitBillFormEvent.setOrder(Order order) = _SetOrder; const factory SplitBillFormEvent.setOrder(Order order) = _SetOrder;
const factory SplitBillFormEvent.customerChanged(Customer customer) = const factory SplitBillFormEvent.customerChanged(Customer? customer) =
_CustomerChanged; _CustomerChanged;
const factory SplitBillFormEvent.customerNameChanged(String customerName) = const factory SplitBillFormEvent.customerNameChanged(String customerName) =
_CustomerNameChanged; _CustomerNameChanged;

View File

@ -240,6 +240,7 @@ class OrderRemoteDataProvider {
Future<DC<OrderFailure, PaymentDto>> createSplitBill( Future<DC<OrderFailure, PaymentDto>> createSplitBill(
PaymentSplitBillRequestDto request, PaymentSplitBillRequestDto request,
) async { ) async {
log(request.toRequest().toString());
try { try {
final response = await _apiClient.post( final response = await _apiClient.post(
"${ApiPath.orders}/split-bill", "${ApiPath.orders}/split-bill",

View File

@ -106,6 +106,7 @@ class PaymentSplitBillRequestDto with _$PaymentSplitBillRequestDto {
customerId: request.customerId, customerId: request.customerId,
type: request.type.toStringType(), type: request.type.toStringType(),
amount: request.amount, amount: request.amount,
customerName: request.customerName,
items: request.items items: request.items
.map((e) => PaymentItemSplitBillRequestDto.fromDomain(e)) .map((e) => PaymentItemSplitBillRequestDto.fromDomain(e))
.toList(), .toList(),

View File

@ -0,0 +1,75 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../../application/order/order_loader/order_loader_bloc.dart';
import '../../../../../common/theme/theme.dart';
import '../../../../../injection.dart';
import '../../../../components/error/order_loader_error_state_widget.dart';
import '../../../../components/loader/loader_with_text.dart';
import 'widgets/payment_success_split_bill_left_panel.dart';
import 'widgets/payment_success_split_bill_right_panel.dart';
@RoutePage()
class PaymentSuccessSplitBillPage extends StatelessWidget
implements AutoRouteWrapper {
final String orderId;
const PaymentSuccessSplitBillPage({super.key, required this.orderId});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.background,
body: SafeArea(
child: BlocBuilder<OrderLoaderBloc, OrderLoaderState>(
builder: (context, state) {
if (state.isFetchingById) {
return const Center(child: LoaderWithText());
}
return state.failureOptionGetById.fold(
() => Container(
padding: const EdgeInsets.all(24.0),
child: Row(
children: [
// Left Panel - Success Message & Order Info
Expanded(
flex: 35,
child: PaymentSuccessSplitBillLeftPanel(
order: state.order,
),
),
const SizedBox(width: 16),
// Right Panel - Order Details
Expanded(
flex: 65,
child: PaymentSuccessSplitBillRightPanel(
order: state.order,
),
),
],
),
),
(f) => OrderLoaderErrorStateWidget(
failure: f,
onRefresh: () {
context.read<OrderLoaderBloc>().add(
OrderLoaderEvent.getById(orderId),
);
},
),
);
},
),
),
);
}
@override
Widget wrappedRoute(BuildContext context) => BlocProvider(
create: (context) =>
getIt<OrderLoaderBloc>()..add(OrderLoaderEvent.getById(orderId)),
child: this,
);
}

View File

@ -0,0 +1,247 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import '../../../../../../common/extension/extension.dart';
import '../../../../../../common/theme/theme.dart';
import '../../../../../../domain/order/order.dart';
import '../../../../../components/button/button.dart';
import '../../../../../components/spaces/space.dart';
import '../../../../../router/app_router.gr.dart';
class PaymentSuccessSplitBillLeftPanel extends StatelessWidget {
final Order order;
const PaymentSuccessSplitBillLeftPanel({super.key, required this.order});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(24),
),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
Container(
width: double.infinity,
padding: const EdgeInsets.all(32.0),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
AppColor.primary.withOpacity(0.1),
AppColor.primary.withOpacity(0.05),
],
),
borderRadius: const BorderRadius.vertical(
top: Radius.circular(24),
),
),
child: Column(
children: [
Container(
padding: const EdgeInsets.all(20.0),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
AppColor.primary,
AppColor.primary.withOpacity(0.8),
],
),
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
color: AppColor.primary.withOpacity(0.3),
blurRadius: 20,
offset: const Offset(0, 10),
),
],
),
child: const Icon(
Icons.check_rounded,
size: 48,
color: Colors.white,
),
),
SpaceHeight(8),
Text(
'Pembayaran Berhasil!',
style: AppStyle.h4.copyWith(
fontWeight: FontWeight.bold,
color: AppColor.primary,
),
),
],
),
),
Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Informasi Pesanan',
style: AppStyle.lg.copyWith(
fontWeight: FontWeight.bold,
),
),
SpaceHeight(24),
_buildInfoRow(
icon: Icons.person,
label: 'Pemesan',
value: order.metadata['customer_name'] ?? "-",
),
const SpaceHeight(12),
_buildInfoRow(
icon: Icons.splitscreen,
label: 'Split Tipe',
value: order.splitType,
),
if (order.payments.isNotEmpty) ...[
const SpaceHeight(12),
_buildInfoRow(
icon: Icons.wallet_outlined,
label: 'Metode Pembayaran',
value: order.payments.first.paymentMethodName,
),
],
if (order.tableNumber != "") ...[
const SpaceHeight(12),
_buildInfoRow(
icon: Icons.table_restaurant_outlined,
label: 'No. Meja',
value: order.tableNumber,
),
],
const SpaceHeight(12),
_buildInfoRow(
icon: Icons.access_time_rounded,
label: 'Waktu',
value: (DateTime.now()).toFormattedDateTime(),
),
],
),
),
],
),
),
),
_buildBottomSection(context),
],
),
);
}
Widget _buildBottomSection(BuildContext context) {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(24.0),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.grey.shade50, Colors.white],
),
borderRadius: const BorderRadius.vertical(bottom: Radius.circular(24)),
),
child: Column(
children: [
// Action Buttons with Modern Design
Row(
children: [
Expanded(
child: AppElevatedButton.outlined(
onPressed: () =>
context.router.replaceAll([const MainRoute()]),
label: "Kembali",
),
),
const SpaceWidth(16),
Expanded(
child: AppElevatedButton.filled(
onPressed: () {
// onPrintRecipt(
// context,
// order: widget.order,
// paymentMethod: widget.paymentMethod,
// nominalBayar: widget.paymentMethod == "Cash"
// ? widget.nominalBayar
// : widget.order.totalAmount ?? 0,
// kembalian: widget.nominalBayar -
// (widget.order.totalAmount ?? 0),
// productQuantity: widget.productQuantity,
// );
// onPrint(
// context,
// productQuantity: widget.productQuantity,
// order: widget.order,
// );
},
label: 'Cetak Struk',
icon: Icon(Icons.print_rounded, color: AppColor.white),
),
),
],
),
],
),
);
}
Widget _buildInfoRow({
required IconData icon,
required String label,
required String value,
Color? valueColor,
bool showBadge = false,
}) {
return Row(
children: [
Icon(icon, size: 18, color: AppColor.primary),
const SizedBox(width: 12),
Expanded(
child: Text(
label,
style: AppStyle.md.copyWith(color: AppColor.textSecondary),
),
),
if (showBadge && valueColor != null)
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: valueColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(12),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.check_circle, size: 14, color: valueColor),
const SizedBox(width: 4),
Text(
value,
style: AppStyle.sm.copyWith(
fontWeight: FontWeight.bold,
color: valueColor,
),
),
],
),
)
else
Text(
value,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.bold,
color: valueColor ?? AppColor.primary,
),
),
],
);
}
}

View File

@ -0,0 +1,325 @@
import 'package:flutter/material.dart';
import '../../../../../../common/extension/extension.dart';
import '../../../../../../common/theme/theme.dart';
import '../../../../../../domain/order/order.dart';
import '../../../../../components/border/dashed_border.dart';
import '../../../../../components/spaces/space.dart';
class PaymentSuccessSplitBillRightPanel extends StatelessWidget {
final Order order;
const PaymentSuccessSplitBillRightPanel({super.key, required this.order});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(24),
),
child: Column(
children: [
_header(),
Expanded(
child: ListView.separated(
padding: const EdgeInsets.all(24.0),
itemCount: order.payments.length,
separatorBuilder: (context, index) => const SizedBox(height: 12),
itemBuilder: (context, index) {
return _buildPaymentCard(index);
},
),
),
_buildSummaryFooter(),
],
),
);
}
Widget _buildSummaryFooter() {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(24.0).copyWith(top: 0),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.grey.shade50, Colors.white],
),
borderRadius: const BorderRadius.vertical(bottom: Radius.circular(24)),
),
child: Column(
children: [
// Decorative Divider
Container(
height: 1,
margin: const EdgeInsets.only(bottom: 20),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
Colors.transparent,
AppColor.primary.withOpacity(0.3),
Colors.transparent,
],
),
),
),
// Subtotal Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Total Dibayar',
style: AppStyle.md.copyWith(
color: AppColor.textSecondary,
fontWeight: FontWeight.w500,
),
),
Text(
(order.totalPaid).toString().currencyFormatRpV2,
style: AppStyle.md.copyWith(fontWeight: FontWeight.w600),
),
],
),
const SpaceHeight(8),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Sisa Tagihan',
style: AppStyle.md.copyWith(
color: AppColor.textSecondary,
fontWeight: FontWeight.w500,
),
),
Text(
(order.remainingAmount).toString().currencyFormatRpV2,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.error,
),
),
],
),
const SpaceHeight(8),
DashedDivider(color: AppColor.border),
const SpaceHeight(8),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Total Tagihan',
style: AppStyle.md.copyWith(
color: AppColor.textSecondary,
fontWeight: FontWeight.w500,
),
),
Text(
(order.totalAmount).toString().currencyFormatRpV2,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.primary,
),
),
],
),
const SpaceHeight(16),
// Total Payment Row with Enhanced Styling
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
AppColor.primary.withOpacity(0.1),
AppColor.primary.withOpacity(0.05),
],
),
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: AppColor.primary.withOpacity(0.2),
width: 1,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Container(
padding: const EdgeInsets.all(6),
decoration: BoxDecoration(
color: AppColor.primary.withOpacity(0.2),
borderRadius: BorderRadius.circular(8),
),
child: Icon(
Icons.payments_rounded,
size: 16,
color: AppColor.primary,
),
),
SpaceWidth(12),
Text(
'Total Pembayaran',
style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold),
),
],
),
Container(
padding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 6,
),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
AppColor.primary,
AppColor.primary.withOpacity(0.8),
],
),
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: AppColor.primary.withOpacity(0.3),
blurRadius: 4,
offset: const Offset(0, 2),
),
],
),
child: Text(
(order.payments.last.amount).toString().currencyFormatRpV2,
style: AppStyle.xl.copyWith(
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
],
),
),
],
),
);
}
Row _buildPaymentCard(int index) {
final payment = order.payments[index];
return Row(
children: [
Container(
width: 32,
height: 32,
decoration: BoxDecoration(
color: AppColor.primary.withOpacity(0.1),
borderRadius: BorderRadius.circular(4),
),
child: Icon(Icons.payments, color: AppColor.primary, size: 16),
),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
payment.paymentMethodName,
style: AppStyle.md.copyWith(fontWeight: FontWeight.w500),
),
if ((payment.splitTotal) > 1)
Text(
'Split ${payment.splitNumber} of ${payment.splitTotal}',
style: AppStyle.md.copyWith(color: AppColor.textSecondary),
),
],
),
),
Text(
(payment.amount).currencyFormatRpV2,
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.primary,
),
),
],
);
}
Container _header() {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(24.0),
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: AppColor.border)),
borderRadius: const BorderRadius.vertical(top: Radius.circular(24)),
),
child: Row(
children: [
Container(
padding: const EdgeInsets.all(12.0),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
AppColor.primary.withOpacity(0.2),
AppColor.primary.withOpacity(0.1),
],
),
borderRadius: BorderRadius.circular(16.0),
),
child: Icon(
Icons.receipt_long_rounded,
color: AppColor.primary,
size: 28,
),
),
SpaceWidth(16),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Daftar Split Bill',
style: AppStyle.xxl.copyWith(fontWeight: FontWeight.bold),
),
SpaceHeight(4),
Text(
'Ringkasan split bill',
style: AppStyle.md.copyWith(color: Colors.grey.shade600),
),
],
),
),
Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [AppColor.primary, AppColor.primary.withOpacity(0.8)],
),
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: AppColor.primary.withOpacity(0.3),
blurRadius: 8,
offset: const Offset(0, 4),
),
],
),
child: Text(
'${order.payments.length} Pembayaran',
style: AppStyle.sm.copyWith(
fontSize: 13,
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
),
],
),
);
}
}

View File

@ -63,7 +63,7 @@ class PaymentPage extends StatelessWidget implements AutoRouteWrapper {
(data) { (data) {
if (context.mounted) { if (context.mounted) {
context.router.replace( context.router.replace(
PaymentSuccessRoute(orderId: order.id), PaymentSuccessSplitBillRoute(orderId: order.id),
); );
} }
}, },

View File

@ -228,6 +228,7 @@ class _PaymentRightPanelState extends State<PaymentRightPanel> {
PaymentFormEvent.submittedSplitBill( PaymentFormEvent.submittedSplitBill(
customerId: widget.customerId, customerId: widget.customerId,
splitType: widget.splitType, splitType: widget.splitType,
customerName: widget.customerName,
), ),
); );
} else { } else {

View File

@ -480,7 +480,7 @@ class _SplitBillRightPanelState extends State<SplitBillRightPanel> {
selectedCustomer: widget.state.customer, selectedCustomer: widget.state.customer,
onSelected: (customer) { onSelected: (customer) {
context.read<SplitBillFormBloc>().add( context.read<SplitBillFormBloc>().add(
SplitBillFormEvent.customerChanged(customer!), SplitBillFormEvent.customerChanged(customer),
); );
}, },
), ),
@ -488,7 +488,7 @@ class _SplitBillRightPanelState extends State<SplitBillRightPanel> {
} }
void _confirmSplit() { void _confirmSplit() {
if (widget.state.customerName == '' || widget.state.customer == null) { if (widget.state.customerName == '') {
AppFlushbar.showError(context, 'Nama Pelanggan harus diisi'); AppFlushbar.showError(context, 'Nama Pelanggan harus diisi');
return; return;
@ -519,6 +519,7 @@ class _SplitBillRightPanelState extends State<SplitBillRightPanel> {
isSplit: true, isSplit: true,
splitType: widget.state.splitType, splitType: widget.state.splitType,
customerId: widget.state.customer?.id, customerId: widget.state.customer?.id,
customerName: widget.state.customerName,
order: widget.state.order.copyWith( order: widget.state.order.copyWith(
orderItems: splitItems, orderItems: splitItems,
subtotal: splitTotal, subtotal: splitTotal,
@ -540,6 +541,7 @@ class _SplitBillRightPanelState extends State<SplitBillRightPanel> {
isSplit: true, isSplit: true,
splitType: widget.state.splitType, splitType: widget.state.splitType,
customerId: widget.state.customer?.id, customerId: widget.state.customer?.id,
customerName: widget.state.customerName,
order: widget.state.order.copyWith( order: widget.state.order.copyWith(
subtotal: widget.state.totalAmount, subtotal: widget.state.totalAmount,
totalAmount: widget.state.totalAmount, totalAmount: widget.state.totalAmount,

View File

@ -37,6 +37,7 @@ class AppRouter extends RootStackRouter {
// Payment // Payment
AutoRoute(page: PaymentRoute.page), AutoRoute(page: PaymentRoute.page),
AutoRoute(page: PaymentSuccessRoute.page), AutoRoute(page: PaymentSuccessRoute.page),
AutoRoute(page: PaymentSuccessSplitBillRoute.page),
// Void // Void
AutoRoute(page: VoidRoute.page), AutoRoute(page: VoidRoute.page),

View File

@ -9,8 +9,8 @@
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: no_leading_underscores_for_library_prefixes // ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:apskel_pos_flutter_v2/common/types/split_type.dart' as _i22; import 'package:apskel_pos_flutter_v2/common/types/split_type.dart' as _i23;
import 'package:apskel_pos_flutter_v2/domain/order/order.dart' as _i21; import 'package:apskel_pos_flutter_v2/domain/order/order.dart' as _i22;
import 'package:apskel_pos_flutter_v2/presentation/pages/auth/login/login_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/auth/login/login_page.dart'
as _i4; as _i4;
import 'package:apskel_pos_flutter_v2/presentation/pages/checkout/checkout_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/checkout/checkout_page.dart'
@ -22,107 +22,109 @@ import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/customer/cus
import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/home/home_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/home/home_page.dart'
as _i3; as _i3;
import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/report/report_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/report/report_page.dart'
as _i9;
import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/setting/setting_page.dart'
as _i10; as _i10;
import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/setting/setting_page.dart'
as _i11;
import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/table/table_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/table/table_page.dart'
as _i16; as _i17;
import 'package:apskel_pos_flutter_v2/presentation/pages/order/order_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/order/order_page.dart'
as _i6; as _i6;
import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_add_item_order/success_add_item_order_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_add_item_order/success_add_item_order_page.dart'
as _i13;
import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_order/success_order_page.dart'
as _i14; as _i14;
import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_order/success_order_page.dart'
as _i15;
import 'package:apskel_pos_flutter_v2/presentation/pages/payment/pages/payment_success/payment_success_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/payment/pages/payment_success/payment_success_page.dart'
as _i8; as _i8;
import 'package:apskel_pos_flutter_v2/presentation/pages/payment/pages/payment_success_split_bill/payment_success_split_bill_page.dart'
as _i9;
import 'package:apskel_pos_flutter_v2/presentation/pages/payment/payment_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/payment/payment_page.dart'
as _i7; as _i7;
import 'package:apskel_pos_flutter_v2/presentation/pages/splash/splash_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/splash/splash_page.dart'
as _i11;
import 'package:apskel_pos_flutter_v2/presentation/pages/split_bill/split_bill_page.dart'
as _i12; as _i12;
import 'package:apskel_pos_flutter_v2/presentation/pages/split_bill/split_bill_page.dart'
as _i13;
import 'package:apskel_pos_flutter_v2/presentation/pages/sync/sync_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/sync/sync_page.dart'
as _i15; as _i16;
import 'package:apskel_pos_flutter_v2/presentation/pages/void/pages/void_success/void_success_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/void/pages/void_success/void_success_page.dart'
as _i18; as _i19;
import 'package:apskel_pos_flutter_v2/presentation/pages/void/void_page.dart' import 'package:apskel_pos_flutter_v2/presentation/pages/void/void_page.dart'
as _i17; as _i18;
import 'package:auto_route/auto_route.dart' as _i19; import 'package:auto_route/auto_route.dart' as _i20;
import 'package:flutter/material.dart' as _i20; import 'package:flutter/material.dart' as _i21;
/// generated route for /// generated route for
/// [_i1.CheckoutPage] /// [_i1.CheckoutPage]
class CheckoutRoute extends _i19.PageRouteInfo<void> { class CheckoutRoute extends _i20.PageRouteInfo<void> {
const CheckoutRoute({List<_i19.PageRouteInfo>? children}) const CheckoutRoute({List<_i20.PageRouteInfo>? children})
: super(CheckoutRoute.name, initialChildren: children); : super(CheckoutRoute.name, initialChildren: children);
static const String name = 'CheckoutRoute'; static const String name = 'CheckoutRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i1.CheckoutPage()); return _i20.WrappedRoute(child: const _i1.CheckoutPage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i2.CustomerPage] /// [_i2.CustomerPage]
class CustomerRoute extends _i19.PageRouteInfo<void> { class CustomerRoute extends _i20.PageRouteInfo<void> {
const CustomerRoute({List<_i19.PageRouteInfo>? children}) const CustomerRoute({List<_i20.PageRouteInfo>? children})
: super(CustomerRoute.name, initialChildren: children); : super(CustomerRoute.name, initialChildren: children);
static const String name = 'CustomerRoute'; static const String name = 'CustomerRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i2.CustomerPage()); return _i20.WrappedRoute(child: const _i2.CustomerPage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i3.HomePage] /// [_i3.HomePage]
class HomeRoute extends _i19.PageRouteInfo<void> { class HomeRoute extends _i20.PageRouteInfo<void> {
const HomeRoute({List<_i19.PageRouteInfo>? children}) const HomeRoute({List<_i20.PageRouteInfo>? children})
: super(HomeRoute.name, initialChildren: children); : super(HomeRoute.name, initialChildren: children);
static const String name = 'HomeRoute'; static const String name = 'HomeRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i3.HomePage()); return _i20.WrappedRoute(child: const _i3.HomePage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i4.LoginPage] /// [_i4.LoginPage]
class LoginRoute extends _i19.PageRouteInfo<void> { class LoginRoute extends _i20.PageRouteInfo<void> {
const LoginRoute({List<_i19.PageRouteInfo>? children}) const LoginRoute({List<_i20.PageRouteInfo>? children})
: super(LoginRoute.name, initialChildren: children); : super(LoginRoute.name, initialChildren: children);
static const String name = 'LoginRoute'; static const String name = 'LoginRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i4.LoginPage()); return _i20.WrappedRoute(child: const _i4.LoginPage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i5.MainPage] /// [_i5.MainPage]
class MainRoute extends _i19.PageRouteInfo<void> { class MainRoute extends _i20.PageRouteInfo<void> {
const MainRoute({List<_i19.PageRouteInfo>? children}) const MainRoute({List<_i20.PageRouteInfo>? children})
: super(MainRoute.name, initialChildren: children); : super(MainRoute.name, initialChildren: children);
static const String name = 'MainRoute'; static const String name = 'MainRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i5.MainPage(); return const _i5.MainPage();
@ -132,11 +134,11 @@ class MainRoute extends _i19.PageRouteInfo<void> {
/// generated route for /// generated route for
/// [_i6.OrderPage] /// [_i6.OrderPage]
class OrderRoute extends _i19.PageRouteInfo<OrderRouteArgs> { class OrderRoute extends _i20.PageRouteInfo<OrderRouteArgs> {
OrderRoute({ OrderRoute({
_i20.Key? key, _i21.Key? key,
required String status, required String status,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
OrderRoute.name, OrderRoute.name,
args: OrderRouteArgs(key: key, status: status), args: OrderRouteArgs(key: key, status: status),
@ -145,11 +147,11 @@ class OrderRoute extends _i19.PageRouteInfo<OrderRouteArgs> {
static const String name = 'OrderRoute'; static const String name = 'OrderRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<OrderRouteArgs>(); final args = data.argsAs<OrderRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i6.OrderPage(key: args.key, status: args.status), child: _i6.OrderPage(key: args.key, status: args.status),
); );
}, },
@ -159,7 +161,7 @@ class OrderRoute extends _i19.PageRouteInfo<OrderRouteArgs> {
class OrderRouteArgs { class OrderRouteArgs {
const OrderRouteArgs({this.key, required this.status}); const OrderRouteArgs({this.key, required this.status});
final _i20.Key? key; final _i21.Key? key;
final String status; final String status;
@ -171,15 +173,15 @@ class OrderRouteArgs {
/// generated route for /// generated route for
/// [_i7.PaymentPage] /// [_i7.PaymentPage]
class PaymentRoute extends _i19.PageRouteInfo<PaymentRouteArgs> { class PaymentRoute extends _i20.PageRouteInfo<PaymentRouteArgs> {
PaymentRoute({ PaymentRoute({
_i20.Key? key, _i21.Key? key,
required _i21.Order order, required _i22.Order order,
bool isSplit = false, bool isSplit = false,
_i22.SplitType splitType = _i22.SplitType.unknown, _i23.SplitType splitType = _i23.SplitType.unknown,
String? customerId, String? customerId,
String? customerName, String? customerName,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
PaymentRoute.name, PaymentRoute.name,
args: PaymentRouteArgs( args: PaymentRouteArgs(
@ -195,11 +197,11 @@ class PaymentRoute extends _i19.PageRouteInfo<PaymentRouteArgs> {
static const String name = 'PaymentRoute'; static const String name = 'PaymentRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<PaymentRouteArgs>(); final args = data.argsAs<PaymentRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i7.PaymentPage( child: _i7.PaymentPage(
key: args.key, key: args.key,
order: args.order, order: args.order,
@ -218,18 +220,18 @@ class PaymentRouteArgs {
this.key, this.key,
required this.order, required this.order,
this.isSplit = false, this.isSplit = false,
this.splitType = _i22.SplitType.unknown, this.splitType = _i23.SplitType.unknown,
this.customerId, this.customerId,
this.customerName, this.customerName,
}); });
final _i20.Key? key; final _i21.Key? key;
final _i21.Order order; final _i22.Order order;
final bool isSplit; final bool isSplit;
final _i22.SplitType splitType; final _i23.SplitType splitType;
final String? customerId; final String? customerId;
@ -243,11 +245,11 @@ class PaymentRouteArgs {
/// generated route for /// generated route for
/// [_i8.PaymentSuccessPage] /// [_i8.PaymentSuccessPage]
class PaymentSuccessRoute extends _i19.PageRouteInfo<PaymentSuccessRouteArgs> { class PaymentSuccessRoute extends _i20.PageRouteInfo<PaymentSuccessRouteArgs> {
PaymentSuccessRoute({ PaymentSuccessRoute({
_i20.Key? key, _i21.Key? key,
required String orderId, required String orderId,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
PaymentSuccessRoute.name, PaymentSuccessRoute.name,
args: PaymentSuccessRouteArgs(key: key, orderId: orderId), args: PaymentSuccessRouteArgs(key: key, orderId: orderId),
@ -256,11 +258,11 @@ class PaymentSuccessRoute extends _i19.PageRouteInfo<PaymentSuccessRouteArgs> {
static const String name = 'PaymentSuccessRoute'; static const String name = 'PaymentSuccessRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<PaymentSuccessRouteArgs>(); final args = data.argsAs<PaymentSuccessRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i8.PaymentSuccessPage(key: args.key, orderId: args.orderId), child: _i8.PaymentSuccessPage(key: args.key, orderId: args.orderId),
); );
}, },
@ -270,7 +272,7 @@ class PaymentSuccessRoute extends _i19.PageRouteInfo<PaymentSuccessRouteArgs> {
class PaymentSuccessRouteArgs { class PaymentSuccessRouteArgs {
const PaymentSuccessRouteArgs({this.key, required this.orderId}); const PaymentSuccessRouteArgs({this.key, required this.orderId});
final _i20.Key? key; final _i21.Key? key;
final String orderId; final String orderId;
@ -281,60 +283,103 @@ class PaymentSuccessRouteArgs {
} }
/// generated route for /// generated route for
/// [_i9.ReportPage] /// [_i9.PaymentSuccessSplitBillPage]
class ReportRoute extends _i19.PageRouteInfo<void> { class PaymentSuccessSplitBillRoute
const ReportRoute({List<_i19.PageRouteInfo>? children}) extends _i20.PageRouteInfo<PaymentSuccessSplitBillRouteArgs> {
PaymentSuccessSplitBillRoute({
_i21.Key? key,
required String orderId,
List<_i20.PageRouteInfo>? children,
}) : super(
PaymentSuccessSplitBillRoute.name,
args: PaymentSuccessSplitBillRouteArgs(key: key, orderId: orderId),
initialChildren: children,
);
static const String name = 'PaymentSuccessSplitBillRoute';
static _i20.PageInfo page = _i20.PageInfo(
name,
builder: (data) {
final args = data.argsAs<PaymentSuccessSplitBillRouteArgs>();
return _i20.WrappedRoute(
child: _i9.PaymentSuccessSplitBillPage(
key: args.key,
orderId: args.orderId,
),
);
},
);
}
class PaymentSuccessSplitBillRouteArgs {
const PaymentSuccessSplitBillRouteArgs({this.key, required this.orderId});
final _i21.Key? key;
final String orderId;
@override
String toString() {
return 'PaymentSuccessSplitBillRouteArgs{key: $key, orderId: $orderId}';
}
}
/// generated route for
/// [_i10.ReportPage]
class ReportRoute extends _i20.PageRouteInfo<void> {
const ReportRoute({List<_i20.PageRouteInfo>? children})
: super(ReportRoute.name, initialChildren: children); : super(ReportRoute.name, initialChildren: children);
static const String name = 'ReportRoute'; static const String name = 'ReportRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i9.ReportPage(); return const _i10.ReportPage();
}, },
); );
} }
/// generated route for /// generated route for
/// [_i10.SettingPage] /// [_i11.SettingPage]
class SettingRoute extends _i19.PageRouteInfo<void> { class SettingRoute extends _i20.PageRouteInfo<void> {
const SettingRoute({List<_i19.PageRouteInfo>? children}) const SettingRoute({List<_i20.PageRouteInfo>? children})
: super(SettingRoute.name, initialChildren: children); : super(SettingRoute.name, initialChildren: children);
static const String name = 'SettingRoute'; static const String name = 'SettingRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i10.SettingPage(); return const _i11.SettingPage();
}, },
); );
} }
/// generated route for /// generated route for
/// [_i11.SplashPage] /// [_i12.SplashPage]
class SplashRoute extends _i19.PageRouteInfo<void> { class SplashRoute extends _i20.PageRouteInfo<void> {
const SplashRoute({List<_i19.PageRouteInfo>? children}) const SplashRoute({List<_i20.PageRouteInfo>? children})
: super(SplashRoute.name, initialChildren: children); : super(SplashRoute.name, initialChildren: children);
static const String name = 'SplashRoute'; static const String name = 'SplashRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i11.SplashPage(); return const _i12.SplashPage();
}, },
); );
} }
/// generated route for /// generated route for
/// [_i12.SplitBillPage] /// [_i13.SplitBillPage]
class SplitBillRoute extends _i19.PageRouteInfo<SplitBillRouteArgs> { class SplitBillRoute extends _i20.PageRouteInfo<SplitBillRouteArgs> {
SplitBillRoute({ SplitBillRoute({
_i20.Key? key, _i21.Key? key,
required _i21.Order order, required _i22.Order order,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
SplitBillRoute.name, SplitBillRoute.name,
args: SplitBillRouteArgs(key: key, order: order), args: SplitBillRouteArgs(key: key, order: order),
@ -343,12 +388,12 @@ class SplitBillRoute extends _i19.PageRouteInfo<SplitBillRouteArgs> {
static const String name = 'SplitBillRoute'; static const String name = 'SplitBillRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<SplitBillRouteArgs>(); final args = data.argsAs<SplitBillRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i12.SplitBillPage(key: args.key, order: args.order), child: _i13.SplitBillPage(key: args.key, order: args.order),
); );
}, },
); );
@ -357,9 +402,9 @@ class SplitBillRoute extends _i19.PageRouteInfo<SplitBillRouteArgs> {
class SplitBillRouteArgs { class SplitBillRouteArgs {
const SplitBillRouteArgs({this.key, required this.order}); const SplitBillRouteArgs({this.key, required this.order});
final _i20.Key? key; final _i21.Key? key;
final _i21.Order order; final _i22.Order order;
@override @override
String toString() { String toString() {
@ -368,28 +413,28 @@ class SplitBillRouteArgs {
} }
/// generated route for /// generated route for
/// [_i13.SuccessAddItemOrderPage] /// [_i14.SuccessAddItemOrderPage]
class SuccessAddItemOrderRoute extends _i19.PageRouteInfo<void> { class SuccessAddItemOrderRoute extends _i20.PageRouteInfo<void> {
const SuccessAddItemOrderRoute({List<_i19.PageRouteInfo>? children}) const SuccessAddItemOrderRoute({List<_i20.PageRouteInfo>? children})
: super(SuccessAddItemOrderRoute.name, initialChildren: children); : super(SuccessAddItemOrderRoute.name, initialChildren: children);
static const String name = 'SuccessAddItemOrderRoute'; static const String name = 'SuccessAddItemOrderRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i13.SuccessAddItemOrderPage(); return const _i14.SuccessAddItemOrderPage();
}, },
); );
} }
/// generated route for /// generated route for
/// [_i14.SuccessOrderPage] /// [_i15.SuccessOrderPage]
class SuccessOrderRoute extends _i19.PageRouteInfo<SuccessOrderRouteArgs> { class SuccessOrderRoute extends _i20.PageRouteInfo<SuccessOrderRouteArgs> {
SuccessOrderRoute({ SuccessOrderRoute({
_i20.Key? key, _i21.Key? key,
required _i21.Order order, required _i22.Order order,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
SuccessOrderRoute.name, SuccessOrderRoute.name,
args: SuccessOrderRouteArgs(key: key, order: order), args: SuccessOrderRouteArgs(key: key, order: order),
@ -398,12 +443,12 @@ class SuccessOrderRoute extends _i19.PageRouteInfo<SuccessOrderRouteArgs> {
static const String name = 'SuccessOrderRoute'; static const String name = 'SuccessOrderRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<SuccessOrderRouteArgs>(); final args = data.argsAs<SuccessOrderRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i14.SuccessOrderPage(key: args.key, order: args.order), child: _i15.SuccessOrderPage(key: args.key, order: args.order),
); );
}, },
); );
@ -412,9 +457,9 @@ class SuccessOrderRoute extends _i19.PageRouteInfo<SuccessOrderRouteArgs> {
class SuccessOrderRouteArgs { class SuccessOrderRouteArgs {
const SuccessOrderRouteArgs({this.key, required this.order}); const SuccessOrderRouteArgs({this.key, required this.order});
final _i20.Key? key; final _i21.Key? key;
final _i21.Order order; final _i22.Order order;
@override @override
String toString() { String toString() {
@ -423,44 +468,44 @@ class SuccessOrderRouteArgs {
} }
/// generated route for /// generated route for
/// [_i15.SyncPage] /// [_i16.SyncPage]
class SyncRoute extends _i19.PageRouteInfo<void> { class SyncRoute extends _i20.PageRouteInfo<void> {
const SyncRoute({List<_i19.PageRouteInfo>? children}) const SyncRoute({List<_i20.PageRouteInfo>? children})
: super(SyncRoute.name, initialChildren: children); : super(SyncRoute.name, initialChildren: children);
static const String name = 'SyncRoute'; static const String name = 'SyncRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i15.SyncPage()); return _i20.WrappedRoute(child: const _i16.SyncPage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i16.TablePage] /// [_i17.TablePage]
class TableRoute extends _i19.PageRouteInfo<void> { class TableRoute extends _i20.PageRouteInfo<void> {
const TableRoute({List<_i19.PageRouteInfo>? children}) const TableRoute({List<_i20.PageRouteInfo>? children})
: super(TableRoute.name, initialChildren: children); : super(TableRoute.name, initialChildren: children);
static const String name = 'TableRoute'; static const String name = 'TableRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return _i19.WrappedRoute(child: const _i16.TablePage()); return _i20.WrappedRoute(child: const _i17.TablePage());
}, },
); );
} }
/// generated route for /// generated route for
/// [_i17.VoidPage] /// [_i18.VoidPage]
class VoidRoute extends _i19.PageRouteInfo<VoidRouteArgs> { class VoidRoute extends _i20.PageRouteInfo<VoidRouteArgs> {
VoidRoute({ VoidRoute({
_i20.Key? key, _i21.Key? key,
required _i21.Order order, required _i22.Order order,
List<_i19.PageRouteInfo>? children, List<_i20.PageRouteInfo>? children,
}) : super( }) : super(
VoidRoute.name, VoidRoute.name,
args: VoidRouteArgs(key: key, order: order), args: VoidRouteArgs(key: key, order: order),
@ -469,12 +514,12 @@ class VoidRoute extends _i19.PageRouteInfo<VoidRouteArgs> {
static const String name = 'VoidRoute'; static const String name = 'VoidRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
final args = data.argsAs<VoidRouteArgs>(); final args = data.argsAs<VoidRouteArgs>();
return _i19.WrappedRoute( return _i20.WrappedRoute(
child: _i17.VoidPage(key: args.key, order: args.order), child: _i18.VoidPage(key: args.key, order: args.order),
); );
}, },
); );
@ -483,9 +528,9 @@ class VoidRoute extends _i19.PageRouteInfo<VoidRouteArgs> {
class VoidRouteArgs { class VoidRouteArgs {
const VoidRouteArgs({this.key, required this.order}); const VoidRouteArgs({this.key, required this.order});
final _i20.Key? key; final _i21.Key? key;
final _i21.Order order; final _i22.Order order;
@override @override
String toString() { String toString() {
@ -494,17 +539,17 @@ class VoidRouteArgs {
} }
/// generated route for /// generated route for
/// [_i18.VoidSuccessPage] /// [_i19.VoidSuccessPage]
class VoidSuccessRoute extends _i19.PageRouteInfo<void> { class VoidSuccessRoute extends _i20.PageRouteInfo<void> {
const VoidSuccessRoute({List<_i19.PageRouteInfo>? children}) const VoidSuccessRoute({List<_i20.PageRouteInfo>? children})
: super(VoidSuccessRoute.name, initialChildren: children); : super(VoidSuccessRoute.name, initialChildren: children);
static const String name = 'VoidSuccessRoute'; static const String name = 'VoidSuccessRoute';
static _i19.PageInfo page = _i19.PageInfo( static _i20.PageInfo page = _i20.PageInfo(
name, name,
builder: (data) { builder: (data) {
return const _i18.VoidSuccessPage(); return const _i19.VoidSuccessPage();
}, },
); );
} }