feat: voucher detail

This commit is contained in:
efrilm 2025-08-29 16:28:27 +07:00
parent 74d706b32a
commit 4dc56662c8
4 changed files with 574 additions and 246 deletions

View File

@ -1,8 +1,10 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import '../../../../../../common/theme/theme.dart';
import '../../../../../../common/ui/clipper/voucher_clipper.dart';
import '../../../../../../common/ui/painter/dashed_line_painter.dart';
import '../../../../../router/app_router.gr.dart';
class VoucherCard extends StatelessWidget {
final String title;
@ -19,7 +21,9 @@ class VoucherCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
return GestureDetector(
onTap: () => context.router.push(VoucherDetailRoute()),
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
@ -76,7 +80,10 @@ class VoucherCard extends StatelessWidget {
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
border: Border.all(color: Colors.grey[300]!, width: 1),
border: Border.all(
color: Colors.grey[300]!,
width: 1,
),
),
child: Stack(
alignment: Alignment.center,
@ -204,6 +211,7 @@ class VoucherCard extends StatelessWidget {
),
),
),
),
);
}
}

View File

@ -0,0 +1,299 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import '../../../../../common/theme/theme.dart';
@RoutePage()
class VoucherDetailPage extends StatelessWidget {
const VoucherDetailPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.background,
appBar: AppBar(
title: Text(
'Detail Voucher',
style: AppStyle.xl.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.textPrimary,
),
),
backgroundColor: AppColor.backgroundLight,
elevation: 0,
iconTheme: IconThemeData(color: AppColor.textPrimary),
bottom: PreferredSize(
preferredSize: Size.fromHeight(1),
child: Container(height: 1, color: AppColor.borderLight),
),
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Voucher Card Section
Container(
margin: EdgeInsets.all(16),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: AppColor.primaryGradient,
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: AppColor.primary.withOpacity(0.3),
offset: Offset(0, 4),
blurRadius: 12,
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Voucher Icon
Container(
width: 48,
height: 48,
decoration: BoxDecoration(
color: AppColor.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(12),
),
child: Icon(
Icons.local_offer,
color: AppColor.white,
size: 24,
),
),
SizedBox(height: 16),
// Title
Text(
'New User Voucher - Diskon 50% hingga Rp35K',
style: AppStyle.xl.copyWith(
color: AppColor.white,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 8),
// Subtitle
Text(
'Tanpa Min. Belanja',
style: AppStyle.md.copyWith(
color: AppColor.white.withOpacity(0.9),
),
),
SizedBox(height: 20),
// Voucher Details Row
Row(
children: [
Expanded(
child: _buildDetailItem(
icon: Icons.schedule,
label: 'Berlaku hingga',
value: '25 Sep 2025',
),
),
Container(
width: 1,
height: 40,
color: AppColor.white.withOpacity(0.3),
margin: EdgeInsets.symmetric(horizontal: 16),
),
Expanded(
child: _buildDetailItem(
icon: Icons.shopping_cart,
label: 'Min. Transaksi',
value: '-',
),
),
],
),
],
),
),
// Action Buttons
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Expanded(
child: ElevatedButton.icon(
onPressed: () {
// Copy voucher code functionality
_copyVoucherCode(context);
},
style: ElevatedButton.styleFrom(
backgroundColor: AppColor.backgroundLight,
foregroundColor: AppColor.primary,
elevation: 0,
padding: EdgeInsets.symmetric(vertical: 16),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
side: BorderSide(color: AppColor.border),
),
),
icon: Icon(Icons.copy, size: 20),
label: Text(
'Salin Kode',
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.primary,
),
),
),
),
SizedBox(width: 12),
Expanded(
child: ElevatedButton(
onPressed: () {
// Use voucher functionality
_useVoucher(context);
},
style: ElevatedButton.styleFrom(
backgroundColor: AppColor.primary,
foregroundColor: AppColor.white,
elevation: 0,
padding: EdgeInsets.symmetric(vertical: 16),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
child: Text(
'Gunakan',
style: AppStyle.md.copyWith(
fontWeight: FontWeight.w600,
color: AppColor.white,
),
),
),
),
],
),
),
SizedBox(height: 24),
// Description Section
_buildSection(
title: 'Deskripsi',
content:
'Dapatkan diskon hingga 50% untuk pembelian pertama Anda! Voucher ini khusus untuk pengguna baru dan berlaku untuk semua kategori produk tanpa minimum pembelian.',
),
SizedBox(height: 16),
// Terms and Conditions Section
_buildSection(
title: 'Syarat dan Ketentuan',
content: _getDefaultTermsAndConditions(),
),
SizedBox(height: 24),
],
),
),
);
}
Widget _buildDetailItem({
required IconData icon,
required String label,
required String value,
}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Icon(icon, size: 16, color: AppColor.white.withOpacity(0.8)),
SizedBox(width: 4),
Text(
label,
style: AppStyle.xs.copyWith(
color: AppColor.white.withOpacity(0.8),
),
),
],
),
SizedBox(height: 4),
Text(
value,
style: AppStyle.sm.copyWith(
color: AppColor.white,
fontWeight: FontWeight.w600,
),
),
],
);
}
Widget _buildSection({required String title, required String content}) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 16),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
color: AppColor.backgroundLight,
borderRadius: BorderRadius.circular(16),
border: Border.all(color: AppColor.borderLight),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: AppStyle.lg.copyWith(
fontWeight: FontWeight.bold,
color: AppColor.textPrimary,
),
),
SizedBox(height: 12),
Text(
content,
style: AppStyle.md.copyWith(
color: AppColor.textSecondary,
height: 1.5,
),
),
],
),
);
}
void _copyVoucherCode(BuildContext context) {
// Implementation for copying voucher code
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Kode voucher berhasil disalin!',
style: AppStyle.md.copyWith(color: AppColor.white),
),
backgroundColor: AppColor.success,
behavior: SnackBarBehavior.floating,
margin: EdgeInsets.all(16),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
);
}
void _useVoucher(BuildContext context) {
// Implementation for using voucher
// Navigate back to checkout or shopping cart
context.router.back(); // Return true to indicate voucher was selected
}
String _getDefaultTermsAndConditions() {
return '''• Voucher hanya berlaku untuk pengguna baru
Tidak dapat digabungkan dengan promo lain
Berlaku untuk semua kategori produk
Voucher tidak dapat diuangkan
Voucher akan hangus jika tidak digunakan sebelum tanggal expired
Satu voucher hanya berlaku untuk satu kali transaksi
Voucher tidak berlaku untuk produk yang sudah didiskon
Kebijakan voucher dapat berubah sewaktu-waktu''';
}
}

View File

@ -41,5 +41,8 @@ class AppRouter extends RootStackRouter {
// Draw
AutoRoute(page: DrawRoute.page),
AutoRoute(page: DrawDetailRoute.page),
// Voucher
AutoRoute(page: VoucherDetailRoute.page),
];
}

View File

@ -9,7 +9,7 @@
// coverage:ignore-file
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:auto_route/auto_route.dart' as _i20;
import 'package:auto_route/auto_route.dart' as _i21;
import 'package:enaklo/presentation/pages/auth/create_password/create_password_page.dart'
as _i1;
import 'package:enaklo/presentation/pages/auth/login/login_page.dart' as _i5;
@ -30,7 +30,7 @@ import 'package:enaklo/presentation/pages/main/pages/order/order_page.dart'
import 'package:enaklo/presentation/pages/main/pages/profile/profile_page.dart'
as _i15;
import 'package:enaklo/presentation/pages/main/pages/voucher/voucher_page.dart'
as _i19;
as _i20;
import 'package:enaklo/presentation/pages/merchant/merchant_page.dart' as _i8;
import 'package:enaklo/presentation/pages/merchant/pages/merchant_detail/merchant_detail_page.dart'
as _i7;
@ -40,17 +40,19 @@ import 'package:enaklo/presentation/pages/reward/pages/product_redeem/product_re
as _i14;
import 'package:enaklo/presentation/pages/reward/reward_page.dart' as _i17;
import 'package:enaklo/presentation/pages/splash/splash_page.dart' as _i18;
import 'package:flutter/material.dart' as _i21;
import 'package:enaklo/presentation/pages/voucher/voucher_detail/voucher_detail_page.dart'
as _i19;
import 'package:flutter/material.dart' as _i22;
/// generated route for
/// [_i1.CreatePasswordPage]
class CreatePasswordRoute extends _i20.PageRouteInfo<void> {
const CreatePasswordRoute({List<_i20.PageRouteInfo>? children})
class CreatePasswordRoute extends _i21.PageRouteInfo<void> {
const CreatePasswordRoute({List<_i21.PageRouteInfo>? children})
: super(CreatePasswordRoute.name, initialChildren: children);
static const String name = 'CreatePasswordRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i1.CreatePasswordPage();
@ -60,11 +62,11 @@ class CreatePasswordRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i2.DrawDetailPage]
class DrawDetailRoute extends _i20.PageRouteInfo<DrawDetailRouteArgs> {
class DrawDetailRoute extends _i21.PageRouteInfo<DrawDetailRouteArgs> {
DrawDetailRoute({
_i21.Key? key,
_i22.Key? key,
required _i3.DrawEvent drawEvent,
List<_i20.PageRouteInfo>? children,
List<_i21.PageRouteInfo>? children,
}) : super(
DrawDetailRoute.name,
args: DrawDetailRouteArgs(key: key, drawEvent: drawEvent),
@ -73,7 +75,7 @@ class DrawDetailRoute extends _i20.PageRouteInfo<DrawDetailRouteArgs> {
static const String name = 'DrawDetailRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
final args = data.argsAs<DrawDetailRouteArgs>();
@ -85,7 +87,7 @@ class DrawDetailRoute extends _i20.PageRouteInfo<DrawDetailRouteArgs> {
class DrawDetailRouteArgs {
const DrawDetailRouteArgs({this.key, required this.drawEvent});
final _i21.Key? key;
final _i22.Key? key;
final _i3.DrawEvent drawEvent;
@ -97,13 +99,13 @@ class DrawDetailRouteArgs {
/// generated route for
/// [_i3.DrawPage]
class DrawRoute extends _i20.PageRouteInfo<void> {
const DrawRoute({List<_i20.PageRouteInfo>? children})
class DrawRoute extends _i21.PageRouteInfo<void> {
const DrawRoute({List<_i21.PageRouteInfo>? children})
: super(DrawRoute.name, initialChildren: children);
static const String name = 'DrawRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i3.DrawPage();
@ -113,13 +115,13 @@ class DrawRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i4.HomePage]
class HomeRoute extends _i20.PageRouteInfo<void> {
const HomeRoute({List<_i20.PageRouteInfo>? children})
class HomeRoute extends _i21.PageRouteInfo<void> {
const HomeRoute({List<_i21.PageRouteInfo>? children})
: super(HomeRoute.name, initialChildren: children);
static const String name = 'HomeRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i4.HomePage();
@ -129,13 +131,13 @@ class HomeRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i5.LoginPage]
class LoginRoute extends _i20.PageRouteInfo<void> {
const LoginRoute({List<_i20.PageRouteInfo>? children})
class LoginRoute extends _i21.PageRouteInfo<void> {
const LoginRoute({List<_i21.PageRouteInfo>? children})
: super(LoginRoute.name, initialChildren: children);
static const String name = 'LoginRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i5.LoginPage();
@ -145,13 +147,13 @@ class LoginRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i6.MainPage]
class MainRoute extends _i20.PageRouteInfo<void> {
const MainRoute({List<_i20.PageRouteInfo>? children})
class MainRoute extends _i21.PageRouteInfo<void> {
const MainRoute({List<_i21.PageRouteInfo>? children})
: super(MainRoute.name, initialChildren: children);
static const String name = 'MainRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i6.MainPage();
@ -161,11 +163,11 @@ class MainRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i7.MerchantDetailPage]
class MerchantDetailRoute extends _i20.PageRouteInfo<MerchantDetailRouteArgs> {
class MerchantDetailRoute extends _i21.PageRouteInfo<MerchantDetailRouteArgs> {
MerchantDetailRoute({
_i21.Key? key,
_i22.Key? key,
required _i8.MerchantModel merchant,
List<_i20.PageRouteInfo>? children,
List<_i21.PageRouteInfo>? children,
}) : super(
MerchantDetailRoute.name,
args: MerchantDetailRouteArgs(key: key, merchant: merchant),
@ -174,7 +176,7 @@ class MerchantDetailRoute extends _i20.PageRouteInfo<MerchantDetailRouteArgs> {
static const String name = 'MerchantDetailRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
final args = data.argsAs<MerchantDetailRouteArgs>();
@ -186,7 +188,7 @@ class MerchantDetailRoute extends _i20.PageRouteInfo<MerchantDetailRouteArgs> {
class MerchantDetailRouteArgs {
const MerchantDetailRouteArgs({this.key, required this.merchant});
final _i21.Key? key;
final _i22.Key? key;
final _i8.MerchantModel merchant;
@ -198,13 +200,13 @@ class MerchantDetailRouteArgs {
/// generated route for
/// [_i8.MerchantPage]
class MerchantRoute extends _i20.PageRouteInfo<void> {
const MerchantRoute({List<_i20.PageRouteInfo>? children})
class MerchantRoute extends _i21.PageRouteInfo<void> {
const MerchantRoute({List<_i21.PageRouteInfo>? children})
: super(MerchantRoute.name, initialChildren: children);
static const String name = 'MerchantRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i8.MerchantPage();
@ -214,13 +216,13 @@ class MerchantRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i9.OnboardingPage]
class OnboardingRoute extends _i20.PageRouteInfo<void> {
const OnboardingRoute({List<_i20.PageRouteInfo>? children})
class OnboardingRoute extends _i21.PageRouteInfo<void> {
const OnboardingRoute({List<_i21.PageRouteInfo>? children})
: super(OnboardingRoute.name, initialChildren: children);
static const String name = 'OnboardingRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i9.OnboardingPage();
@ -230,13 +232,13 @@ class OnboardingRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i10.OrderPage]
class OrderRoute extends _i20.PageRouteInfo<void> {
const OrderRoute({List<_i20.PageRouteInfo>? children})
class OrderRoute extends _i21.PageRouteInfo<void> {
const OrderRoute({List<_i21.PageRouteInfo>? children})
: super(OrderRoute.name, initialChildren: children);
static const String name = 'OrderRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i10.OrderPage();
@ -246,13 +248,13 @@ class OrderRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i11.OtpPage]
class OtpRoute extends _i20.PageRouteInfo<void> {
const OtpRoute({List<_i20.PageRouteInfo>? children})
class OtpRoute extends _i21.PageRouteInfo<void> {
const OtpRoute({List<_i21.PageRouteInfo>? children})
: super(OtpRoute.name, initialChildren: children);
static const String name = 'OtpRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i11.OtpPage();
@ -262,13 +264,13 @@ class OtpRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i12.PasswordPage]
class PasswordRoute extends _i20.PageRouteInfo<void> {
const PasswordRoute({List<_i20.PageRouteInfo>? children})
class PasswordRoute extends _i21.PageRouteInfo<void> {
const PasswordRoute({List<_i21.PageRouteInfo>? children})
: super(PasswordRoute.name, initialChildren: children);
static const String name = 'PasswordRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i12.PasswordPage();
@ -278,12 +280,12 @@ class PasswordRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i13.PinPage]
class PinRoute extends _i20.PageRouteInfo<PinRouteArgs> {
class PinRoute extends _i21.PageRouteInfo<PinRouteArgs> {
PinRoute({
_i21.Key? key,
_i22.Key? key,
bool isCreatePin = true,
String? title,
List<_i20.PageRouteInfo>? children,
List<_i21.PageRouteInfo>? children,
}) : super(
PinRoute.name,
args: PinRouteArgs(key: key, isCreatePin: isCreatePin, title: title),
@ -292,7 +294,7 @@ class PinRoute extends _i20.PageRouteInfo<PinRouteArgs> {
static const String name = 'PinRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
final args = data.argsAs<PinRouteArgs>(
@ -310,7 +312,7 @@ class PinRoute extends _i20.PageRouteInfo<PinRouteArgs> {
class PinRouteArgs {
const PinRouteArgs({this.key, this.isCreatePin = true, this.title});
final _i21.Key? key;
final _i22.Key? key;
final bool isCreatePin;
@ -324,13 +326,13 @@ class PinRouteArgs {
/// generated route for
/// [_i14.ProductRedeemPage]
class ProductRedeemRoute extends _i20.PageRouteInfo<ProductRedeemRouteArgs> {
class ProductRedeemRoute extends _i21.PageRouteInfo<ProductRedeemRouteArgs> {
ProductRedeemRoute({
_i21.Key? key,
_i22.Key? key,
required _i17.Product product,
required _i17.Merchant merchant,
required _i17.PointCard pointCard,
List<_i20.PageRouteInfo>? children,
List<_i21.PageRouteInfo>? children,
}) : super(
ProductRedeemRoute.name,
args: ProductRedeemRouteArgs(
@ -344,7 +346,7 @@ class ProductRedeemRoute extends _i20.PageRouteInfo<ProductRedeemRouteArgs> {
static const String name = 'ProductRedeemRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
final args = data.argsAs<ProductRedeemRouteArgs>();
@ -366,7 +368,7 @@ class ProductRedeemRouteArgs {
required this.pointCard,
});
final _i21.Key? key;
final _i22.Key? key;
final _i17.Product product;
@ -382,13 +384,13 @@ class ProductRedeemRouteArgs {
/// generated route for
/// [_i15.ProfilePage]
class ProfileRoute extends _i20.PageRouteInfo<void> {
const ProfileRoute({List<_i20.PageRouteInfo>? children})
class ProfileRoute extends _i21.PageRouteInfo<void> {
const ProfileRoute({List<_i21.PageRouteInfo>? children})
: super(ProfileRoute.name, initialChildren: children);
static const String name = 'ProfileRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i15.ProfilePage();
@ -398,13 +400,13 @@ class ProfileRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i16.RegisterPage]
class RegisterRoute extends _i20.PageRouteInfo<void> {
const RegisterRoute({List<_i20.PageRouteInfo>? children})
class RegisterRoute extends _i21.PageRouteInfo<void> {
const RegisterRoute({List<_i21.PageRouteInfo>? children})
: super(RegisterRoute.name, initialChildren: children);
static const String name = 'RegisterRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i16.RegisterPage();
@ -414,13 +416,13 @@ class RegisterRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i17.RewardPage]
class RewardRoute extends _i20.PageRouteInfo<void> {
const RewardRoute({List<_i20.PageRouteInfo>? children})
class RewardRoute extends _i21.PageRouteInfo<void> {
const RewardRoute({List<_i21.PageRouteInfo>? children})
: super(RewardRoute.name, initialChildren: children);
static const String name = 'RewardRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i17.RewardPage();
@ -430,13 +432,13 @@ class RewardRoute extends _i20.PageRouteInfo<void> {
/// generated route for
/// [_i18.SplashPage]
class SplashRoute extends _i20.PageRouteInfo<void> {
const SplashRoute({List<_i20.PageRouteInfo>? children})
class SplashRoute extends _i21.PageRouteInfo<void> {
const SplashRoute({List<_i21.PageRouteInfo>? children})
: super(SplashRoute.name, initialChildren: children);
static const String name = 'SplashRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i18.SplashPage();
@ -445,17 +447,33 @@ class SplashRoute extends _i20.PageRouteInfo<void> {
}
/// generated route for
/// [_i19.VoucherPage]
class VoucherRoute extends _i20.PageRouteInfo<void> {
const VoucherRoute({List<_i20.PageRouteInfo>? children})
/// [_i19.VoucherDetailPage]
class VoucherDetailRoute extends _i21.PageRouteInfo<void> {
const VoucherDetailRoute({List<_i21.PageRouteInfo>? children})
: super(VoucherDetailRoute.name, initialChildren: children);
static const String name = 'VoucherDetailRoute';
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i19.VoucherDetailPage();
},
);
}
/// generated route for
/// [_i20.VoucherPage]
class VoucherRoute extends _i21.PageRouteInfo<void> {
const VoucherRoute({List<_i21.PageRouteInfo>? children})
: super(VoucherRoute.name, initialChildren: children);
static const String name = 'VoucherRoute';
static _i20.PageInfo page = _i20.PageInfo(
static _i21.PageInfo page = _i21.PageInfo(
name,
builder: (data) {
return const _i19.VoucherPage();
return const _i20.VoucherPage();
},
);
}