From bf43c398d264d363d14d014baa205aa554b6c434 Mon Sep 17 00:00:00 2001 From: efrilm Date: Thu, 30 Oct 2025 17:08:11 +0700 Subject: [PATCH] payment success page --- .../order_loader_error_state_widget.dart | 66 ++-- .../payment_success/payment_success_page.dart | 70 ++++ .../widgets/payment_success_left_panel.dart | 241 ++++++++++++ .../widgets/payment_success_right_panel.dart | 352 ++++++++++++++++++ .../pages/payment/payment_page.dart | 7 +- lib/presentation/router/app_router.dart | 1 + lib/presentation/router/app_router.gr.dart | 207 +++++----- 7 files changed, 833 insertions(+), 111 deletions(-) create mode 100644 lib/presentation/pages/payment/pages/payment_success/payment_success_page.dart create mode 100644 lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_left_panel.dart create mode 100644 lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_right_panel.dart diff --git a/lib/presentation/components/error/order_loader_error_state_widget.dart b/lib/presentation/components/error/order_loader_error_state_widget.dart index 8f716f8..3ef4ebd 100644 --- a/lib/presentation/components/error/order_loader_error_state_widget.dart +++ b/lib/presentation/components/error/order_loader_error_state_widget.dart @@ -7,11 +7,13 @@ import '../card/error_card.dart'; class OrderLoaderErrorStateWidget extends StatelessWidget { final OrderFailure failure; - final String status; + final String? status; + final Function()? onRefresh; const OrderLoaderErrorStateWidget({ super.key, required this.failure, - required this.status, + this.status, + this.onRefresh, }); @override @@ -20,47 +22,57 @@ class OrderLoaderErrorStateWidget extends StatelessWidget { orElse: () => ErrorCard( title: 'Pesanan', message: 'Terjadi kesalahan saat memuat pesanan', - onTap: () { - context.read().add( - OrderLoaderEvent.fetched(status: status, isRefresh: true), - ); - }, + onTap: + onRefresh ?? + () { + context.read().add( + OrderLoaderEvent.fetched(status: status ?? '', isRefresh: true), + ); + }, ), dynamicErrorMessage: (value) => ErrorCard( title: 'Pesanan', message: value.erroMessage, - onTap: () { - context.read().add( - OrderLoaderEvent.fetched(status: status, isRefresh: true), - ); - }, + onTap: + onRefresh ?? + () { + context.read().add( + OrderLoaderEvent.fetched(status: status ?? '', isRefresh: true), + ); + }, ), empty: (value) => ErrorCard( title: 'Pesanan', message: 'Data Pesanan Kosong', - onTap: () { - context.read().add( - OrderLoaderEvent.fetched(status: status, isRefresh: true), - ); - }, + onTap: + onRefresh ?? + () { + context.read().add( + OrderLoaderEvent.fetched(status: status ?? '', isRefresh: true), + ); + }, ), serverError: (value) => ErrorCard( title: 'Pesanan', message: 'Terjadi kesalahan saat memuat pesanan', - onTap: () { - context.read().add( - OrderLoaderEvent.fetched(status: status, isRefresh: true), - ); - }, + onTap: + onRefresh ?? + () { + context.read().add( + OrderLoaderEvent.fetched(status: status ?? '', isRefresh: true), + ); + }, ), unexpectedError: (value) => ErrorCard( title: 'Pesanan', message: 'Terjadi kesalahan saat memuat pesanan', - onTap: () { - context.read().add( - OrderLoaderEvent.fetched(status: status, isRefresh: true), - ); - }, + onTap: + onRefresh ?? + () { + context.read().add( + OrderLoaderEvent.fetched(status: status ?? '', isRefresh: true), + ); + }, ), ); } diff --git a/lib/presentation/pages/payment/pages/payment_success/payment_success_page.dart b/lib/presentation/pages/payment/pages/payment_success/payment_success_page.dart new file mode 100644 index 0000000..b09fe85 --- /dev/null +++ b/lib/presentation/pages/payment/pages/payment_success/payment_success_page.dart @@ -0,0 +1,70 @@ +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_left_panel.dart'; +import 'widgets/payment_success_right_panel.dart'; + +@RoutePage() +class PaymentSuccessPage extends StatelessWidget implements AutoRouteWrapper { + final String orderId; + const PaymentSuccessPage({super.key, required this.orderId}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColor.background, + body: SafeArea( + child: BlocBuilder( + 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: PaymentSuccessLeftPanel(order: state.order), + ), + + const SizedBox(width: 16), + + // Right Panel - Order Details + Expanded( + flex: 65, + child: PaymentSuccessRightPanel(order: state.order), + ), + ], + ), + ), + (f) => OrderLoaderErrorStateWidget( + failure: f, + onRefresh: () { + context.read().add( + OrderLoaderEvent.getById(orderId), + ); + }, + ), + ); + }, + ), + ), + ); + } + + @override + Widget wrappedRoute(BuildContext context) => BlocProvider( + create: (context) => + getIt()..add(OrderLoaderEvent.getById(orderId)), + child: this, + ); +} diff --git a/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_left_panel.dart b/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_left_panel.dart new file mode 100644 index 0000000..4963a77 --- /dev/null +++ b/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_left_panel.dart @@ -0,0 +1,241 @@ +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 PaymentSuccessLeftPanel extends StatelessWidget { + final Order order; + const PaymentSuccessLeftPanel({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(16), + 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'] ?? "-", + ), + 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, + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_right_panel.dart b/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_right_panel.dart new file mode 100644 index 0000000..8e92f1d --- /dev/null +++ b/lib/presentation/pages/payment/pages/payment_success/widgets/payment_success_right_panel.dart @@ -0,0 +1,352 @@ +import 'package:flutter/material.dart'; + +import '../../../../../../common/extension/extension.dart'; +import '../../../../../../common/theme/theme.dart'; +import '../../../../../../domain/order/order.dart'; +import '../../../../../components/spaces/space.dart'; + +class PaymentSuccessRightPanel extends StatelessWidget { + final Order order; + const PaymentSuccessRightPanel({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.orderItems.length, + separatorBuilder: (context, index) => const SizedBox(height: 12), + itemBuilder: (context, index) { + return _buildProductCard(index); + }, + ), + ), + _buildSummaryFooter(), + ], + ), + ); + } + + Widget _buildSummaryFooter() { + 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: [ + // 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: [ + Row( + children: [ + Icon( + Icons.shopping_cart_outlined, + size: 16, + color: AppColor.textSecondary, + ), + const SizedBox(width: 8), + Text( + 'Subtotal (${order.orderItems.length} items)', + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ], + ), + Text( + (order.totalAmount).toString().currencyFormatRpV2, + style: AppStyle.md.copyWith(fontWeight: FontWeight.w600), + ), + ], + ), + + 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.totalAmount).toString().currencyFormatRpV2, + style: AppStyle.xl.copyWith( + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildProductCard(int index) { + final item = order.orderItems[index]; + + return Container( + padding: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16.0), + border: Border.all(color: AppColor.border, width: 1), + ), + child: Row( + children: [ + // Enhanced Product Image + Container( + width: 70, + height: 70, + decoration: BoxDecoration( + color: AppColor.primaryWithOpacity(0.1), + borderRadius: BorderRadius.circular(16.0), + ), + child: Icon( + Icons.restaurant_rounded, + color: AppColor.primary, + size: 28, + ), + ), + + const SpaceWidth(16), + + // Product Details + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.productName, + style: AppStyle.lg.copyWith(fontWeight: FontWeight.bold), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SpaceHeight(6), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + decoration: BoxDecoration( + color: Colors.grey.shade100, + borderRadius: BorderRadius.circular(8), + ), + child: Text( + item.unitPrice.currencyFormatRpV2, + style: AppStyle.md.copyWith( + color: AppColor.textSecondary, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ), + ), + + const SpaceWidth(16), + + // Quantity and Total + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 8, + ), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.primary, + AppColor.primary.withOpacity(0.8), + ], + ), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + '${item.quantity}x', + style: AppStyle.md.copyWith( + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ), + const SpaceHeight(8), + Text( + item.totalPrice.toString().currencyFormatRpV2, + style: AppStyle.lg.copyWith( + fontWeight: FontWeight.bold, + 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( + 'Detail Pesanan', + style: AppStyle.xxl.copyWith(fontWeight: FontWeight.bold), + ), + SpaceHeight(4), + Text( + 'Ringkasan item yang dipesan', + 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.orderItems.length} Items', + style: const TextStyle( + fontSize: 13, + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/payment/payment_page.dart b/lib/presentation/pages/payment/payment_page.dart index e18c487..0041d0d 100644 --- a/lib/presentation/pages/payment/payment_page.dart +++ b/lib/presentation/pages/payment/payment_page.dart @@ -9,6 +9,7 @@ import '../../../domain/order/order.dart'; import '../../../injection.dart'; import '../../components/spaces/space.dart'; import '../../components/toast/flushbar.dart'; +import '../../router/app_router.gr.dart'; import 'widgets/payment_left_panel.dart'; import 'widgets/payment_right_panel.dart'; @@ -26,7 +27,11 @@ class PaymentPage extends StatelessWidget implements AutoRouteWrapper { () {}, (either) => either.fold( (f) => AppFlushbar.showOrderFailureToast(context, f), - (data) {}, + (data) { + if (context.mounted) { + context.router.replace(PaymentSuccessRoute(orderId: order.id)); + } + }, ), ); }, diff --git a/lib/presentation/router/app_router.dart b/lib/presentation/router/app_router.dart index d1930d5..875e612 100644 --- a/lib/presentation/router/app_router.dart +++ b/lib/presentation/router/app_router.dart @@ -36,5 +36,6 @@ class AppRouter extends RootStackRouter { // Payment AutoRoute(page: PaymentRoute.page), + AutoRoute(page: PaymentSuccessRoute.page), ]; } diff --git a/lib/presentation/router/app_router.gr.dart b/lib/presentation/router/app_router.gr.dart index 60ec272..e0ce77e 100644 --- a/lib/presentation/router/app_router.gr.dart +++ b/lib/presentation/router/app_router.gr.dart @@ -9,7 +9,7 @@ // coverage:ignore-file // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:apskel_pos_flutter_v2/domain/order/order.dart' as _i17; +import 'package:apskel_pos_flutter_v2/domain/order/order.dart' as _i18; import 'package:apskel_pos_flutter_v2/presentation/pages/auth/login/login_page.dart' as _i4; import 'package:apskel_pos_flutter_v2/presentation/pages/checkout/checkout_page.dart' @@ -21,99 +21,101 @@ 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' as _i3; import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/report/report_page.dart' - as _i8; -import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/setting/setting_page.dart' as _i9; +import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/setting/setting_page.dart' + as _i10; import 'package:apskel_pos_flutter_v2/presentation/pages/main/pages/table/table_page.dart' - as _i14; + as _i15; import 'package:apskel_pos_flutter_v2/presentation/pages/order/order_page.dart' as _i6; import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_add_item_order/success_add_item_order_page.dart' - as _i11; -import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_order/success_order_page.dart' as _i12; +import 'package:apskel_pos_flutter_v2/presentation/pages/order/pages/success_order/success_order_page.dart' + as _i13; +import 'package:apskel_pos_flutter_v2/presentation/pages/payment/pages/payment_success/payment_success_page.dart' + as _i8; import 'package:apskel_pos_flutter_v2/presentation/pages/payment/payment_page.dart' as _i7; import 'package:apskel_pos_flutter_v2/presentation/pages/splash/splash_page.dart' - as _i10; + as _i11; import 'package:apskel_pos_flutter_v2/presentation/pages/sync/sync_page.dart' - as _i13; -import 'package:auto_route/auto_route.dart' as _i15; -import 'package:flutter/material.dart' as _i16; + as _i14; +import 'package:auto_route/auto_route.dart' as _i16; +import 'package:flutter/material.dart' as _i17; /// generated route for /// [_i1.CheckoutPage] -class CheckoutRoute extends _i15.PageRouteInfo { - const CheckoutRoute({List<_i15.PageRouteInfo>? children}) +class CheckoutRoute extends _i16.PageRouteInfo { + const CheckoutRoute({List<_i16.PageRouteInfo>? children}) : super(CheckoutRoute.name, initialChildren: children); static const String name = 'CheckoutRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i1.CheckoutPage()); + return _i16.WrappedRoute(child: const _i1.CheckoutPage()); }, ); } /// generated route for /// [_i2.CustomerPage] -class CustomerRoute extends _i15.PageRouteInfo { - const CustomerRoute({List<_i15.PageRouteInfo>? children}) +class CustomerRoute extends _i16.PageRouteInfo { + const CustomerRoute({List<_i16.PageRouteInfo>? children}) : super(CustomerRoute.name, initialChildren: children); static const String name = 'CustomerRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i2.CustomerPage()); + return _i16.WrappedRoute(child: const _i2.CustomerPage()); }, ); } /// generated route for /// [_i3.HomePage] -class HomeRoute extends _i15.PageRouteInfo { - const HomeRoute({List<_i15.PageRouteInfo>? children}) +class HomeRoute extends _i16.PageRouteInfo { + const HomeRoute({List<_i16.PageRouteInfo>? children}) : super(HomeRoute.name, initialChildren: children); static const String name = 'HomeRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i3.HomePage()); + return _i16.WrappedRoute(child: const _i3.HomePage()); }, ); } /// generated route for /// [_i4.LoginPage] -class LoginRoute extends _i15.PageRouteInfo { - const LoginRoute({List<_i15.PageRouteInfo>? children}) +class LoginRoute extends _i16.PageRouteInfo { + const LoginRoute({List<_i16.PageRouteInfo>? children}) : super(LoginRoute.name, initialChildren: children); static const String name = 'LoginRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i4.LoginPage()); + return _i16.WrappedRoute(child: const _i4.LoginPage()); }, ); } /// generated route for /// [_i5.MainPage] -class MainRoute extends _i15.PageRouteInfo { - const MainRoute({List<_i15.PageRouteInfo>? children}) +class MainRoute extends _i16.PageRouteInfo { + const MainRoute({List<_i16.PageRouteInfo>? children}) : super(MainRoute.name, initialChildren: children); static const String name = 'MainRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { return const _i5.MainPage(); @@ -123,11 +125,11 @@ class MainRoute extends _i15.PageRouteInfo { /// generated route for /// [_i6.OrderPage] -class OrderRoute extends _i15.PageRouteInfo { +class OrderRoute extends _i16.PageRouteInfo { OrderRoute({ - _i16.Key? key, + _i17.Key? key, required String status, - List<_i15.PageRouteInfo>? children, + List<_i16.PageRouteInfo>? children, }) : super( OrderRoute.name, args: OrderRouteArgs(key: key, status: status), @@ -136,11 +138,11 @@ class OrderRoute extends _i15.PageRouteInfo { static const String name = 'OrderRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i15.WrappedRoute( + return _i16.WrappedRoute( child: _i6.OrderPage(key: args.key, status: args.status), ); }, @@ -150,7 +152,7 @@ class OrderRoute extends _i15.PageRouteInfo { class OrderRouteArgs { const OrderRouteArgs({this.key, required this.status}); - final _i16.Key? key; + final _i17.Key? key; final String status; @@ -162,11 +164,11 @@ class OrderRouteArgs { /// generated route for /// [_i7.PaymentPage] -class PaymentRoute extends _i15.PageRouteInfo { +class PaymentRoute extends _i16.PageRouteInfo { PaymentRoute({ - _i16.Key? key, - required _i17.Order order, - List<_i15.PageRouteInfo>? children, + _i17.Key? key, + required _i18.Order order, + List<_i16.PageRouteInfo>? children, }) : super( PaymentRoute.name, args: PaymentRouteArgs(key: key, order: order), @@ -175,11 +177,11 @@ class PaymentRoute extends _i15.PageRouteInfo { static const String name = 'PaymentRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i15.WrappedRoute( + return _i16.WrappedRoute( child: _i7.PaymentPage(key: args.key, order: args.order), ); }, @@ -189,9 +191,9 @@ class PaymentRoute extends _i15.PageRouteInfo { class PaymentRouteArgs { const PaymentRouteArgs({this.key, required this.order}); - final _i16.Key? key; + final _i17.Key? key; - final _i17.Order order; + final _i18.Order order; @override String toString() { @@ -200,76 +202,115 @@ class PaymentRouteArgs { } /// generated route for -/// [_i8.ReportPage] -class ReportRoute extends _i15.PageRouteInfo { - const ReportRoute({List<_i15.PageRouteInfo>? children}) +/// [_i8.PaymentSuccessPage] +class PaymentSuccessRoute extends _i16.PageRouteInfo { + PaymentSuccessRoute({ + _i17.Key? key, + required String orderId, + List<_i16.PageRouteInfo>? children, + }) : super( + PaymentSuccessRoute.name, + args: PaymentSuccessRouteArgs(key: key, orderId: orderId), + initialChildren: children, + ); + + static const String name = 'PaymentSuccessRoute'; + + static _i16.PageInfo page = _i16.PageInfo( + name, + builder: (data) { + final args = data.argsAs(); + return _i16.WrappedRoute( + child: _i8.PaymentSuccessPage(key: args.key, orderId: args.orderId), + ); + }, + ); +} + +class PaymentSuccessRouteArgs { + const PaymentSuccessRouteArgs({this.key, required this.orderId}); + + final _i17.Key? key; + + final String orderId; + + @override + String toString() { + return 'PaymentSuccessRouteArgs{key: $key, orderId: $orderId}'; + } +} + +/// generated route for +/// [_i9.ReportPage] +class ReportRoute extends _i16.PageRouteInfo { + const ReportRoute({List<_i16.PageRouteInfo>? children}) : super(ReportRoute.name, initialChildren: children); static const String name = 'ReportRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i8.ReportPage(); + return const _i9.ReportPage(); }, ); } /// generated route for -/// [_i9.SettingPage] -class SettingRoute extends _i15.PageRouteInfo { - const SettingRoute({List<_i15.PageRouteInfo>? children}) +/// [_i10.SettingPage] +class SettingRoute extends _i16.PageRouteInfo { + const SettingRoute({List<_i16.PageRouteInfo>? children}) : super(SettingRoute.name, initialChildren: children); static const String name = 'SettingRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i9.SettingPage(); + return const _i10.SettingPage(); }, ); } /// generated route for -/// [_i10.SplashPage] -class SplashRoute extends _i15.PageRouteInfo { - const SplashRoute({List<_i15.PageRouteInfo>? children}) +/// [_i11.SplashPage] +class SplashRoute extends _i16.PageRouteInfo { + const SplashRoute({List<_i16.PageRouteInfo>? children}) : super(SplashRoute.name, initialChildren: children); static const String name = 'SplashRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i10.SplashPage(); + return const _i11.SplashPage(); }, ); } /// generated route for -/// [_i11.SuccessAddItemOrderPage] -class SuccessAddItemOrderRoute extends _i15.PageRouteInfo { - const SuccessAddItemOrderRoute({List<_i15.PageRouteInfo>? children}) +/// [_i12.SuccessAddItemOrderPage] +class SuccessAddItemOrderRoute extends _i16.PageRouteInfo { + const SuccessAddItemOrderRoute({List<_i16.PageRouteInfo>? children}) : super(SuccessAddItemOrderRoute.name, initialChildren: children); static const String name = 'SuccessAddItemOrderRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return const _i11.SuccessAddItemOrderPage(); + return const _i12.SuccessAddItemOrderPage(); }, ); } /// generated route for -/// [_i12.SuccessOrderPage] -class SuccessOrderRoute extends _i15.PageRouteInfo { +/// [_i13.SuccessOrderPage] +class SuccessOrderRoute extends _i16.PageRouteInfo { SuccessOrderRoute({ - _i16.Key? key, - required _i17.Order order, - List<_i15.PageRouteInfo>? children, + _i17.Key? key, + required _i18.Order order, + List<_i16.PageRouteInfo>? children, }) : super( SuccessOrderRoute.name, args: SuccessOrderRouteArgs(key: key, order: order), @@ -278,12 +319,12 @@ class SuccessOrderRoute extends _i15.PageRouteInfo { static const String name = 'SuccessOrderRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { final args = data.argsAs(); - return _i15.WrappedRoute( - child: _i12.SuccessOrderPage(key: args.key, order: args.order), + return _i16.WrappedRoute( + child: _i13.SuccessOrderPage(key: args.key, order: args.order), ); }, ); @@ -292,9 +333,9 @@ class SuccessOrderRoute extends _i15.PageRouteInfo { class SuccessOrderRouteArgs { const SuccessOrderRouteArgs({this.key, required this.order}); - final _i16.Key? key; + final _i17.Key? key; - final _i17.Order order; + final _i18.Order order; @override String toString() { @@ -303,33 +344,33 @@ class SuccessOrderRouteArgs { } /// generated route for -/// [_i13.SyncPage] -class SyncRoute extends _i15.PageRouteInfo { - const SyncRoute({List<_i15.PageRouteInfo>? children}) +/// [_i14.SyncPage] +class SyncRoute extends _i16.PageRouteInfo { + const SyncRoute({List<_i16.PageRouteInfo>? children}) : super(SyncRoute.name, initialChildren: children); static const String name = 'SyncRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i13.SyncPage()); + return _i16.WrappedRoute(child: const _i14.SyncPage()); }, ); } /// generated route for -/// [_i14.TablePage] -class TableRoute extends _i15.PageRouteInfo { - const TableRoute({List<_i15.PageRouteInfo>? children}) +/// [_i15.TablePage] +class TableRoute extends _i16.PageRouteInfo { + const TableRoute({List<_i16.PageRouteInfo>? children}) : super(TableRoute.name, initialChildren: children); static const String name = 'TableRoute'; - static _i15.PageInfo page = _i15.PageInfo( + static _i16.PageInfo page = _i16.PageInfo( name, builder: (data) { - return _i15.WrappedRoute(child: const _i14.TablePage()); + return _i16.WrappedRoute(child: const _i15.TablePage()); }, ); }