Compare commits
2 Commits
909c312af0
...
82e1f93cce
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82e1f93cce | ||
|
|
1ce980a87b |
@ -1,3 +1,5 @@
|
|||||||
class AppConstant {
|
class AppConstant {
|
||||||
static const String appName = "";
|
static const String appName = "Enaklo";
|
||||||
|
static const String coinName = "EnakCoin";
|
||||||
|
static const String poinName = "EnakPoin";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ class ApiPath {
|
|||||||
|
|
||||||
// Marketing
|
// Marketing
|
||||||
static String ferrisWheel = '/api/v1/customer/ferris-wheel';
|
static String ferrisWheel = '/api/v1/customer/ferris-wheel';
|
||||||
|
|
||||||
// Customer
|
// Customer
|
||||||
static String customerPoint = '/api/v1/customer/points';
|
static String customerPoint = '/api/v1/customer/points';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,12 +9,13 @@ abstract class Env {
|
|||||||
@dev
|
@dev
|
||||||
class DevEnv implements Env {
|
class DevEnv implements Env {
|
||||||
@override
|
@override
|
||||||
String get baseUrl => 'http://192.168.1.30:4000'; // example value
|
// String get baseUrl => 'http://192.168.1.30:4000'; // example value
|
||||||
|
String get baseUrl => 'https://api-pos.apskel.id'; // example value
|
||||||
}
|
}
|
||||||
|
|
||||||
@Injectable(as: Env)
|
@Injectable(as: Env)
|
||||||
@prod
|
@prod
|
||||||
class ProdEnv implements Env {
|
class ProdEnv implements Env {
|
||||||
@override
|
@override
|
||||||
String get baseUrl => 'https://enaklo-pos-be.altru.id';
|
String get baseUrl => 'https://api-pos.apskel.id';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,7 +211,9 @@ class AuthRemoteDataProvider {
|
|||||||
if ((response.data['errors'] as List).isNotEmpty) {
|
if ((response.data['errors'] as List).isNotEmpty) {
|
||||||
if (response.data['errors'][0]['code'] == "900") {
|
if (response.data['errors'][0]['code'] == "900") {
|
||||||
return DC.error(
|
return DC.error(
|
||||||
AuthFailure.dynamicErrorMessage('Kamu Belum Terdaftar'),
|
AuthFailure.dynamicErrorMessage(
|
||||||
|
response.data['errors'][0]['cause'],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return DC.error(
|
return DC.error(
|
||||||
|
|||||||
@ -124,12 +124,12 @@ extension GetItInjectableX on _i174.GetIt {
|
|||||||
gh.factory<_i869.CheckPhoneFormBloc>(
|
gh.factory<_i869.CheckPhoneFormBloc>(
|
||||||
() => _i869.CheckPhoneFormBloc(gh<_i995.IAuthRepository>()),
|
() => _i869.CheckPhoneFormBloc(gh<_i995.IAuthRepository>()),
|
||||||
);
|
);
|
||||||
gh.factory<_i521.VerifyFormBloc>(
|
|
||||||
() => _i521.VerifyFormBloc(gh<_i995.IAuthRepository>()),
|
|
||||||
);
|
|
||||||
gh.factory<_i771.AuthBloc>(
|
gh.factory<_i771.AuthBloc>(
|
||||||
() => _i771.AuthBloc(gh<_i995.IAuthRepository>()),
|
() => _i771.AuthBloc(gh<_i995.IAuthRepository>()),
|
||||||
);
|
);
|
||||||
|
gh.factory<_i521.VerifyFormBloc>(
|
||||||
|
() => _i521.VerifyFormBloc(gh<_i995.IAuthRepository>()),
|
||||||
|
);
|
||||||
gh.factory<_i216.LogoutFormBloc>(
|
gh.factory<_i216.LogoutFormBloc>(
|
||||||
() => _i216.LogoutFormBloc(gh<_i995.IAuthRepository>()),
|
() => _i216.LogoutFormBloc(gh<_i995.IAuthRepository>()),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -11,6 +11,38 @@
|
|||||||
|
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
class $AssetsAudioGen {
|
||||||
|
const $AssetsAudioGen();
|
||||||
|
|
||||||
|
/// File path: assets/audio/bell_ding.mp3
|
||||||
|
String get bellDing => 'assets/audio/bell_ding.mp3';
|
||||||
|
|
||||||
|
/// File path: assets/audio/big_win.mp3
|
||||||
|
String get bigWin => 'assets/audio/big_win.mp3';
|
||||||
|
|
||||||
|
/// File path: assets/audio/button_tap.mp3
|
||||||
|
String get buttonTap => 'assets/audio/button_tap.mp3';
|
||||||
|
|
||||||
|
/// File path: assets/audio/carnaval_main_theme.mp3
|
||||||
|
String get carnavalMainTheme => 'assets/audio/carnaval_main_theme.mp3';
|
||||||
|
|
||||||
|
/// File path: assets/audio/token_sound.mp3
|
||||||
|
String get tokenSound => 'assets/audio/token_sound.mp3';
|
||||||
|
|
||||||
|
/// File path: assets/audio/wheel_spin.mp3
|
||||||
|
String get wheelSpin => 'assets/audio/wheel_spin.mp3';
|
||||||
|
|
||||||
|
/// List of all assets
|
||||||
|
List<String> get values => [
|
||||||
|
bellDing,
|
||||||
|
bigWin,
|
||||||
|
buttonTap,
|
||||||
|
carnavalMainTheme,
|
||||||
|
tokenSound,
|
||||||
|
wheelSpin,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
class $AssetsImagesGen {
|
class $AssetsImagesGen {
|
||||||
const $AssetsImagesGen();
|
const $AssetsImagesGen();
|
||||||
|
|
||||||
@ -64,6 +96,7 @@ class $AssetsImagesGen {
|
|||||||
class Assets {
|
class Assets {
|
||||||
const Assets._();
|
const Assets._();
|
||||||
|
|
||||||
|
static const $AssetsAudioGen audio = $AssetsAudioGen();
|
||||||
static const $AssetsImagesGen images = $AssetsImagesGen();
|
static const $AssetsImagesGen images = $AssetsImagesGen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
118
lib/presentation/components/card/gradient_card.dart
Normal file
118
lib/presentation/components/card/gradient_card.dart
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../../../common/theme/theme.dart';
|
||||||
|
|
||||||
|
class GradientCard extends StatelessWidget {
|
||||||
|
final Widget child;
|
||||||
|
final List<Color>? gradientColors;
|
||||||
|
final double borderRadius;
|
||||||
|
final EdgeInsetsGeometry? padding;
|
||||||
|
final bool showDecoration;
|
||||||
|
|
||||||
|
const GradientCard({
|
||||||
|
super.key,
|
||||||
|
required this.child,
|
||||||
|
this.gradientColors,
|
||||||
|
this.borderRadius = 16,
|
||||||
|
this.padding = const EdgeInsets.all(16.0),
|
||||||
|
this.showDecoration = true,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
colors: gradientColors ?? AppColor.primaryGradient,
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(borderRadius),
|
||||||
|
),
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
// Background Pattern (optional)
|
||||||
|
if (showDecoration) ..._buildDecorations(),
|
||||||
|
// Main Content
|
||||||
|
Padding(padding: padding ?? EdgeInsets.zero, child: child),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Widget> _buildDecorations() {
|
||||||
|
return [
|
||||||
|
// Top Right Circle
|
||||||
|
Positioned(
|
||||||
|
top: -20,
|
||||||
|
right: -20,
|
||||||
|
child: Container(
|
||||||
|
width: 80,
|
||||||
|
height: 80,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: Colors.white.withOpacity(0.1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Middle Right Circle
|
||||||
|
Positioned(
|
||||||
|
top: 30,
|
||||||
|
right: 20,
|
||||||
|
child: Container(
|
||||||
|
width: 40,
|
||||||
|
height: 40,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: Colors.white.withOpacity(0.08),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Bottom Left Circle
|
||||||
|
Positioned(
|
||||||
|
bottom: -10,
|
||||||
|
left: -10,
|
||||||
|
child: Container(
|
||||||
|
width: 60,
|
||||||
|
height: 60,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: Colors.white.withOpacity(0.06),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Top Left Decorative Line
|
||||||
|
Positioned(
|
||||||
|
top: 10,
|
||||||
|
left: -5,
|
||||||
|
child: Transform.rotate(
|
||||||
|
angle: 0.5,
|
||||||
|
child: Container(
|
||||||
|
width: 30,
|
||||||
|
height: 2,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white.withOpacity(0.15),
|
||||||
|
borderRadius: BorderRadius.circular(1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Bottom Right Decorative Line
|
||||||
|
Positioned(
|
||||||
|
bottom: 15,
|
||||||
|
right: 10,
|
||||||
|
child: Transform.rotate(
|
||||||
|
angle: -0.5,
|
||||||
|
child: Container(
|
||||||
|
width: 25,
|
||||||
|
height: 2,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white.withOpacity(0.15),
|
||||||
|
borderRadius: BorderRadius.circular(1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -60,14 +60,14 @@ class Product {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RoutePage()
|
@RoutePage()
|
||||||
class PoinPage extends StatefulWidget {
|
class CoinPage extends StatefulWidget {
|
||||||
const PoinPage({super.key});
|
const CoinPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<PoinPage> createState() => _PoinPageState();
|
State<CoinPage> createState() => _CoinPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PoinPageState extends State<PoinPage> {
|
class _CoinPageState extends State<CoinPage> {
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
|
|
||||||
// Sample data - Indonesian content
|
// Sample data - Indonesian content
|
||||||
@ -276,7 +276,7 @@ class _PoinPageState extends State<PoinPage> {
|
|||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(Icons.history),
|
icon: Icon(Icons.history),
|
||||||
onPressed: () => context.router.push(PoinHistoryRoute()),
|
onPressed: () => context.router.push(CoinHistoryRoute()),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -43,14 +43,14 @@ class PointTransaction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RoutePage()
|
@RoutePage()
|
||||||
class PoinHistoryPage extends StatefulWidget {
|
class CoinHistoryPage extends StatefulWidget {
|
||||||
const PoinHistoryPage({super.key});
|
const CoinHistoryPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<PoinHistoryPage> createState() => _PoinHistoryPageState();
|
State<CoinHistoryPage> createState() => _CoinHistoryPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PoinHistoryPageState extends State<PoinHistoryPage> {
|
class _CoinHistoryPageState extends State<CoinHistoryPage> {
|
||||||
TransactionType selectedFilter = TransactionType.all;
|
TransactionType selectedFilter = TransactionType.all;
|
||||||
|
|
||||||
// Sample transaction data
|
// Sample transaction data
|
||||||
@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../../../../../common/theme/theme.dart';
|
import '../../../../../common/theme/theme.dart';
|
||||||
import '../../poin_page.dart';
|
import '../../coin_page.dart';
|
||||||
|
|
||||||
@RoutePage()
|
@RoutePage()
|
||||||
class ProductRedeemPage extends StatefulWidget {
|
class ProductRedeemPage extends StatefulWidget {
|
||||||
@ -24,7 +24,12 @@ class _MainPageState extends State<MainPage> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AutoTabsRouter.pageView(
|
return AutoTabsRouter.pageView(
|
||||||
routes: [HomeRoute(), VoucherRoute(), OrderRoute(), ProfileRoute()],
|
routes: [
|
||||||
|
HomeRoute(),
|
||||||
|
// VoucherRoute(),
|
||||||
|
OrderRoute(),
|
||||||
|
ProfileRoute(),
|
||||||
|
],
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
builder: (context, child, pageController) => Scaffold(
|
builder: (context, child, pageController) => Scaffold(
|
||||||
body: child,
|
body: child,
|
||||||
|
|||||||
@ -1,52 +1,60 @@
|
|||||||
import 'package:auto_route/auto_route.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
||||||
import '../../../../../../application/auth/auth_bloc.dart';
|
import '../../../../../../common/theme/theme.dart';
|
||||||
import '../../../../../router/app_router.gr.dart';
|
import '../../../../../components/card/gradient_card.dart';
|
||||||
import 'feature_card.dart';
|
|
||||||
|
|
||||||
class HomeFeatureSection extends StatelessWidget {
|
class HomeFeatureSection extends StatelessWidget {
|
||||||
const HomeFeatureSection({super.key});
|
const HomeFeatureSection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocBuilder<AuthBloc, AuthState>(
|
return Padding(
|
||||||
builder: (context, state) {
|
padding: const EdgeInsets.all(16),
|
||||||
return Container(
|
child: Row(
|
||||||
padding: const EdgeInsets.all(16),
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
child: Row(
|
children: [
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
Expanded(
|
||||||
children: [
|
child: GradientCard(
|
||||||
HomeFeatureCard(
|
child: _content(
|
||||||
icon: Icons.card_giftcard,
|
'Dine In',
|
||||||
title: 'Reward',
|
'Rasakan Sensasi Langsung di Meja Kami!',
|
||||||
iconColor: const Color(0xFF1976D2),
|
|
||||||
onTap: () => context.router.push(RewardRoute()),
|
|
||||||
),
|
),
|
||||||
HomeFeatureCard(
|
),
|
||||||
icon: Icons.casino,
|
|
||||||
title: 'Undian',
|
|
||||||
iconColor: const Color(0xFF7B1FA2),
|
|
||||||
onTap: () => context.router.push(DrawRoute()),
|
|
||||||
),
|
|
||||||
HomeFeatureCard(
|
|
||||||
icon: Icons.store,
|
|
||||||
title: 'Merchant',
|
|
||||||
iconColor: const Color(0xFF388E3C),
|
|
||||||
onTap: () => context.router.push(MerchantRoute()),
|
|
||||||
),
|
|
||||||
HomeFeatureCard(
|
|
||||||
icon: Icons.blur_circular,
|
|
||||||
title: 'Wheels',
|
|
||||||
iconColor: const Color(0xFF388E3C),
|
|
||||||
onTap: () => state.isAuthenticated
|
|
||||||
? context.router.push(FerrisWheelRoute())
|
|
||||||
: context.router.push(OnboardingRoute()),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
);
|
SizedBox(width: 16),
|
||||||
},
|
Expanded(
|
||||||
|
child: GradientCard(
|
||||||
|
child: _content(
|
||||||
|
'Take Away',
|
||||||
|
'Nikmati di Mana Saja, Tetap Mantap!',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Column _content(String title, String subtitle) {
|
||||||
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
title,
|
||||||
|
style: AppStyle.lg.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
subtitle,
|
||||||
|
style: AppStyle.md.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ class HomePointCard extends StatelessWidget {
|
|||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () => state.isAuthenticated
|
onTap: () => state.isAuthenticated
|
||||||
? context.router.push(PoinRoute())
|
? context.router.push(CoinRoute())
|
||||||
: context.router.push(OnboardingRoute()),
|
: context.router.push(OnboardingRoute()),
|
||||||
child: Container(
|
child: Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import '../../../../../application/auth/auth_bloc.dart';
|
|||||||
import '../../../../../application/auth/logout_form/logout_form_bloc.dart';
|
import '../../../../../application/auth/logout_form/logout_form_bloc.dart';
|
||||||
import '../../../../../common/theme/theme.dart';
|
import '../../../../../common/theme/theme.dart';
|
||||||
import '../../../../../injection.dart';
|
import '../../../../../injection.dart';
|
||||||
|
import '../../../../components/card/gradient_card.dart';
|
||||||
import '../../../../components/toast/flushbar.dart';
|
import '../../../../components/toast/flushbar.dart';
|
||||||
import '../../../../router/app_router.gr.dart';
|
import '../../../../router/app_router.gr.dart';
|
||||||
|
|
||||||
@ -46,165 +47,81 @@ class ProfilePage extends StatelessWidget implements AutoRouteWrapper {
|
|||||||
onTap: () => state.isAuthenticated
|
onTap: () => state.isAuthenticated
|
||||||
? context.router.push(AccountMyRoute())
|
? context.router.push(AccountMyRoute())
|
||||||
: context.router.push(OnboardingRoute()),
|
: context.router.push(OnboardingRoute()),
|
||||||
child: Container(
|
child: GradientCard(
|
||||||
decoration: BoxDecoration(
|
child: !state.isAuthenticated
|
||||||
gradient: LinearGradient(
|
? Row(
|
||||||
colors: AppColor.primaryGradient,
|
children: [
|
||||||
begin: Alignment.topLeft,
|
Expanded(
|
||||||
end: Alignment.bottomRight,
|
child: Text(
|
||||||
),
|
'Silahkan Masuk',
|
||||||
borderRadius: BorderRadius.circular(16),
|
style: AppStyle.lg.copyWith(
|
||||||
),
|
fontWeight: FontWeight.bold,
|
||||||
child: Stack(
|
color: AppColor.white,
|
||||||
children: [
|
letterSpacing: 0.5,
|
||||||
// Background Pattern
|
),
|
||||||
Positioned(
|
),
|
||||||
top: -20,
|
|
||||||
right: -20,
|
|
||||||
child: Container(
|
|
||||||
width: 80,
|
|
||||||
height: 80,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: AppColor.white.withOpacity(0.1),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
top: 30,
|
|
||||||
right: 20,
|
|
||||||
child: Container(
|
|
||||||
width: 40,
|
|
||||||
height: 40,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: AppColor.white.withOpacity(0.08),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
bottom: -10,
|
|
||||||
left: -10,
|
|
||||||
child: Container(
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
color: AppColor.white.withOpacity(0.06),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Decorative Lines
|
|
||||||
Positioned(
|
|
||||||
top: 10,
|
|
||||||
left: -5,
|
|
||||||
child: Transform.rotate(
|
|
||||||
angle: 0.5,
|
|
||||||
child: Container(
|
|
||||||
width: 30,
|
|
||||||
height: 2,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: AppColor.white.withOpacity(0.15),
|
|
||||||
borderRadius: BorderRadius.circular(1),
|
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
),
|
)
|
||||||
),
|
: Row(
|
||||||
Positioned(
|
children: [
|
||||||
bottom: 15,
|
// Avatar
|
||||||
right: 10,
|
Container(
|
||||||
child: Transform.rotate(
|
width: 60,
|
||||||
angle: -0.5,
|
height: 60,
|
||||||
child: Container(
|
decoration: BoxDecoration(
|
||||||
width: 25,
|
color: AppColor.white,
|
||||||
height: 2,
|
shape: BoxShape.circle,
|
||||||
decoration: BoxDecoration(
|
boxShadow: [
|
||||||
color: AppColor.white.withOpacity(0.15),
|
BoxShadow(
|
||||||
borderRadius: BorderRadius.circular(1),
|
color: AppColor.black.withOpacity(
|
||||||
),
|
0.1,
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Main Content
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(16.0),
|
|
||||||
child: !state.isAuthenticated
|
|
||||||
? Row(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: Text(
|
|
||||||
'Silahkan Masuk',
|
|
||||||
style: AppStyle.lg.copyWith(
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: AppColor.white,
|
|
||||||
letterSpacing: 0.5,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
blurRadius: 8,
|
||||||
],
|
offset: const Offset(0, 2),
|
||||||
)
|
|
||||||
: Row(
|
|
||||||
children: [
|
|
||||||
// Avatar
|
|
||||||
Container(
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: AppColor.white,
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
boxShadow: [
|
|
||||||
BoxShadow(
|
|
||||||
color: AppColor.black
|
|
||||||
.withOpacity(0.1),
|
|
||||||
blurRadius: 8,
|
|
||||||
offset: const Offset(0, 2),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
child: Icon(
|
|
||||||
Icons.person,
|
|
||||||
size: 30,
|
|
||||||
color: AppColor.primary,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 16),
|
|
||||||
// User Info
|
|
||||||
Expanded(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
state.user.name,
|
|
||||||
style: AppStyle.lg.copyWith(
|
|
||||||
fontWeight:
|
|
||||||
FontWeight.bold,
|
|
||||||
color: AppColor.white,
|
|
||||||
letterSpacing: 0.5,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 4),
|
|
||||||
Text(
|
|
||||||
state.user.phoneNumber,
|
|
||||||
style: AppStyle.sm.copyWith(
|
|
||||||
color: AppColor.white
|
|
||||||
.withOpacity(0.9),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Arrow Icon
|
|
||||||
Icon(
|
|
||||||
Icons.arrow_forward_ios,
|
|
||||||
color: AppColor.white,
|
|
||||||
size: 14,
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
child: Icon(
|
||||||
],
|
Icons.person,
|
||||||
),
|
size: 30,
|
||||||
|
color: AppColor.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 16),
|
||||||
|
// User Info
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
state.user.name,
|
||||||
|
style: AppStyle.lg.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.white,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 4),
|
||||||
|
Text(
|
||||||
|
state.user.phoneNumber,
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
color: AppColor.white
|
||||||
|
.withOpacity(0.9),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Arrow Icon
|
||||||
|
Icon(
|
||||||
|
Icons.arrow_forward_ios,
|
||||||
|
color: AppColor.white,
|
||||||
|
size: 14,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -18,11 +18,11 @@ class MainBottomNavbar extends StatelessWidget {
|
|||||||
label: 'Home',
|
label: 'Home',
|
||||||
tooltip: 'Home',
|
tooltip: 'Home',
|
||||||
),
|
),
|
||||||
BottomNavigationBarItem(
|
// BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.discount),
|
// icon: Icon(Icons.discount),
|
||||||
label: 'Voucher',
|
// label: 'Voucher',
|
||||||
tooltip: 'Voucher',
|
// tooltip: 'Voucher',
|
||||||
),
|
// ),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.list),
|
icon: Icon(Icons.list),
|
||||||
label: 'Pesanan',
|
label: 'Pesanan',
|
||||||
|
|||||||
@ -0,0 +1,880 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../../../../common/theme/theme.dart';
|
||||||
|
|
||||||
|
@RoutePage()
|
||||||
|
class MisteryBoxPage extends StatefulWidget {
|
||||||
|
const MisteryBoxPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<MisteryBoxPage> createState() => _MisteryBoxPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MisteryBoxPageState extends State<MisteryBoxPage>
|
||||||
|
with TickerProviderStateMixin {
|
||||||
|
int coins = 100;
|
||||||
|
int totalWins = 0;
|
||||||
|
List<Prize> prizes = [
|
||||||
|
Prize(
|
||||||
|
name: 'Voucher Rp 100K',
|
||||||
|
type: 'Voucher',
|
||||||
|
value: 100000,
|
||||||
|
rarity: 'Legendary',
|
||||||
|
chance: 5,
|
||||||
|
icon: '🎁',
|
||||||
|
),
|
||||||
|
Prize(
|
||||||
|
name: 'Cashback 50%',
|
||||||
|
type: 'Cashback',
|
||||||
|
value: 50,
|
||||||
|
rarity: 'Epic',
|
||||||
|
chance: 10,
|
||||||
|
icon: '💰',
|
||||||
|
),
|
||||||
|
Prize(
|
||||||
|
name: '500 Poin Reward',
|
||||||
|
type: 'Poin',
|
||||||
|
value: 500,
|
||||||
|
rarity: 'Rare',
|
||||||
|
chance: 15,
|
||||||
|
icon: '🏆',
|
||||||
|
),
|
||||||
|
Prize(
|
||||||
|
name: 'Voucher Rp 25K',
|
||||||
|
type: 'Voucher',
|
||||||
|
value: 25000,
|
||||||
|
rarity: 'Uncommon',
|
||||||
|
chance: 25,
|
||||||
|
icon: '🎫',
|
||||||
|
),
|
||||||
|
Prize(
|
||||||
|
name: '100 Poin Reward',
|
||||||
|
type: 'Poin',
|
||||||
|
value: 100,
|
||||||
|
rarity: 'Common',
|
||||||
|
chance: 30,
|
||||||
|
icon: '⭐',
|
||||||
|
),
|
||||||
|
Prize(
|
||||||
|
name: 'Diskon 10%',
|
||||||
|
type: 'Diskon',
|
||||||
|
value: 10,
|
||||||
|
rarity: 'Common',
|
||||||
|
chance: 15,
|
||||||
|
icon: '🍕',
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
bool isOpening = false;
|
||||||
|
late AnimationController _shakeController;
|
||||||
|
late AnimationController _rotateController;
|
||||||
|
late Animation<double> _shakeAnimation;
|
||||||
|
late Animation<double> _rotateAnimation;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_shakeController = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 600),
|
||||||
|
vsync: this,
|
||||||
|
);
|
||||||
|
_rotateController = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 600),
|
||||||
|
vsync: this,
|
||||||
|
);
|
||||||
|
|
||||||
|
_shakeAnimation = Tween<double>(begin: 0, end: 15).animate(
|
||||||
|
CurvedAnimation(parent: _shakeController, curve: Curves.elasticIn),
|
||||||
|
);
|
||||||
|
_rotateAnimation = Tween<double>(begin: 0, end: 2 * pi).animate(
|
||||||
|
CurvedAnimation(parent: _rotateController, curve: Curves.easeInOut),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_shakeController.dispose();
|
||||||
|
_rotateController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void openBox() async {
|
||||||
|
if (coins < 10 || isOpening) return;
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
isOpening = true;
|
||||||
|
coins -= 10;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Animasi shake dan rotate
|
||||||
|
_shakeController.repeat(reverse: true);
|
||||||
|
_rotateController.forward();
|
||||||
|
await Future.delayed(const Duration(milliseconds: 1200));
|
||||||
|
_shakeController.stop();
|
||||||
|
_rotateController.reset();
|
||||||
|
|
||||||
|
// Generate prize
|
||||||
|
Prize prize = _generatePrize();
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
totalWins++;
|
||||||
|
isOpening = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Show dialog
|
||||||
|
if (mounted) {
|
||||||
|
_showPrizeDialog(prize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Prize _generatePrize() {
|
||||||
|
int random = Random().nextInt(100);
|
||||||
|
int cumulativeChance = 0;
|
||||||
|
|
||||||
|
for (var prize in prizes) {
|
||||||
|
cumulativeChance += prize.chance;
|
||||||
|
if (random < cumulativeChance) {
|
||||||
|
return prize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prizes.last;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _showPrizeDialog(Prize prize) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
barrierDismissible: false,
|
||||||
|
builder: (context) => PrizeDialog(prize: prize),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Color _getRarityColor(String rarity) {
|
||||||
|
switch (rarity) {
|
||||||
|
case 'Legendary':
|
||||||
|
return const Color(0xFFFFD700);
|
||||||
|
case 'Epic':
|
||||||
|
return const Color(0xFFB429F9);
|
||||||
|
case 'Rare':
|
||||||
|
return const Color(0xFF3B82F6);
|
||||||
|
case 'Uncommon':
|
||||||
|
return const Color(0xFF10B981);
|
||||||
|
default:
|
||||||
|
return const Color(0xFF9CA3AF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
body: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
AppColor.primary,
|
||||||
|
AppColor.primaryDark,
|
||||||
|
const Color(0xFF4A0000),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: SafeArea(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
_buildHeader(),
|
||||||
|
Expanded(
|
||||||
|
child: Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
_buildMysteryBox(),
|
||||||
|
const SizedBox(height: 40),
|
||||||
|
_buildOpenButton(),
|
||||||
|
const SizedBox(height: 24),
|
||||||
|
_buildPrizeListButton(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildHeader() {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'🎁 Mystery Box',
|
||||||
|
style: AppStyle.h5.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Win Amazing Rewards!',
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.white.withOpacity(0.8),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
_buildStatCard('🪙', coins.toString()),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
_buildStatCard('🏆', totalWins.toString()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildStatCard(String icon, String value) {
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.white.withOpacity(0.2),
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
border: Border.all(color: AppColor.white.withOpacity(0.3), width: 1.5),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Text(icon, style: const TextStyle(fontSize: 16)),
|
||||||
|
const SizedBox(width: 6),
|
||||||
|
Text(
|
||||||
|
value,
|
||||||
|
style: AppStyle.md.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildMysteryBox() {
|
||||||
|
return AnimatedBuilder(
|
||||||
|
animation: Listenable.merge([_shakeAnimation, _rotateAnimation]),
|
||||||
|
builder: (context, child) {
|
||||||
|
return Transform.translate(
|
||||||
|
offset: Offset(
|
||||||
|
sin(_shakeAnimation.value) * 10,
|
||||||
|
cos(_shakeAnimation.value) * 5,
|
||||||
|
),
|
||||||
|
child: Transform.rotate(
|
||||||
|
angle: _rotateAnimation.value,
|
||||||
|
child: Container(
|
||||||
|
width: 200,
|
||||||
|
height: 200,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.white,
|
||||||
|
borderRadius: BorderRadius.circular(24),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.black.withOpacity(0.3),
|
||||||
|
blurRadius: 30,
|
||||||
|
offset: const Offset(0, 15),
|
||||||
|
),
|
||||||
|
BoxShadow(
|
||||||
|
color: AppColor.warning.withOpacity(0.5),
|
||||||
|
blurRadius: 50,
|
||||||
|
spreadRadius: isOpening ? 8 : 0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
Positioned(
|
||||||
|
top: 15,
|
||||||
|
left: 15,
|
||||||
|
child: Container(
|
||||||
|
width: 30,
|
||||||
|
height: 30,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.warning.withOpacity(0.2),
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: 20,
|
||||||
|
right: 20,
|
||||||
|
child: Container(
|
||||||
|
width: 25,
|
||||||
|
height: 25,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.success.withOpacity(0.2),
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const Text('🎁', style: TextStyle(fontSize: 70)),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12,
|
||||||
|
vertical: 4,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
colors: AppColor.primaryGradient,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'Mystery Box',
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (isOpening) ...[
|
||||||
|
const Positioned(
|
||||||
|
top: 25,
|
||||||
|
right: 25,
|
||||||
|
child: Text('✨', style: TextStyle(fontSize: 24)),
|
||||||
|
),
|
||||||
|
const Positioned(
|
||||||
|
bottom: 30,
|
||||||
|
left: 25,
|
||||||
|
child: Text('✨', style: TextStyle(fontSize: 24)),
|
||||||
|
),
|
||||||
|
const Positioned(
|
||||||
|
top: 50,
|
||||||
|
left: 30,
|
||||||
|
child: Text('⭐', style: TextStyle(fontSize: 20)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildOpenButton() {
|
||||||
|
bool canOpen = coins >= 10 && !isOpening;
|
||||||
|
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: canOpen ? openBox : null,
|
||||||
|
child: AnimatedContainer(
|
||||||
|
duration: const Duration(milliseconds: 200),
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 16),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: canOpen ? AppColor.white : AppColor.white.withOpacity(0.3),
|
||||||
|
borderRadius: BorderRadius.circular(25),
|
||||||
|
boxShadow: canOpen
|
||||||
|
? [
|
||||||
|
BoxShadow(
|
||||||
|
color: AppColor.white.withOpacity(0.3),
|
||||||
|
blurRadius: 15,
|
||||||
|
offset: const Offset(0, 6),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
: [],
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
isOpening ? Icons.refresh : Icons.card_giftcard,
|
||||||
|
color: canOpen ? AppColor.primary : AppColor.textLight,
|
||||||
|
size: 24,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 10),
|
||||||
|
Text(
|
||||||
|
isOpening ? 'Membuka...' : 'Buka Box',
|
||||||
|
style: AppStyle.lg.copyWith(
|
||||||
|
color: canOpen ? AppColor.primary : AppColor.textLight,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: canOpen
|
||||||
|
? AppColor.warning.withOpacity(0.2)
|
||||||
|
: AppColor.textLight.withOpacity(0.2),
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'10 🪙',
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: canOpen ? AppColor.warning : AppColor.textLight,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildPrizeListButton() {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
showModalBottomSheet(
|
||||||
|
context: context,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
isScrollControlled: true,
|
||||||
|
builder: (context) => _buildPrizeListModal(),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 12),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.white.withOpacity(0.2),
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
border: Border.all(color: AppColor.white.withOpacity(0.3), width: 2),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
const Icon(Icons.emoji_events, color: AppColor.white, size: 20),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'Lihat Hadiah Tersedia',
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4),
|
||||||
|
const Icon(
|
||||||
|
Icons.arrow_forward_ios,
|
||||||
|
color: AppColor.white,
|
||||||
|
size: 14,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildPrizeListModal() {
|
||||||
|
return Container(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.7,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: AppColor.white,
|
||||||
|
borderRadius: BorderRadius.vertical(top: Radius.circular(24)),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
// Handle bar
|
||||||
|
Container(
|
||||||
|
margin: const EdgeInsets.only(top: 12),
|
||||||
|
width: 40,
|
||||||
|
height: 4,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.textLight,
|
||||||
|
borderRadius: BorderRadius.circular(2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Header
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(20),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Hadiah Tersedia',
|
||||||
|
style: AppStyle.h5.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 10,
|
||||||
|
vertical: 4,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.primary.withOpacity(0.1),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'${prizes.length} Items',
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.primary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Prize Grid
|
||||||
|
Expanded(
|
||||||
|
child: GridView.builder(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
||||||
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
|
crossAxisCount: 2,
|
||||||
|
childAspectRatio: 0.70,
|
||||||
|
crossAxisSpacing: 12,
|
||||||
|
mainAxisSpacing: 12,
|
||||||
|
),
|
||||||
|
itemCount: prizes.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
final prize = prizes[index];
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topLeft,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
_getRarityColor(prize.rarity).withOpacity(0.1),
|
||||||
|
_getRarityColor(prize.rarity).withOpacity(0.05),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
border: Border.all(
|
||||||
|
color: _getRarityColor(prize.rarity).withOpacity(0.4),
|
||||||
|
width: 2,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Text(prize.icon, style: const TextStyle(fontSize: 40)),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 10,
|
||||||
|
vertical: 4,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: _getRarityColor(prize.rarity),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
prize.rarity,
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 9,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
prize.name,
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 4),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 8,
|
||||||
|
vertical: 3,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.primary.withOpacity(0.1),
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
prize.type,
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.primary,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 10,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 8,
|
||||||
|
vertical: 3,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: _getRarityColor(
|
||||||
|
prize.rarity,
|
||||||
|
).withOpacity(0.2),
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.percent,
|
||||||
|
size: 10,
|
||||||
|
color: _getRarityColor(prize.rarity),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 2),
|
||||||
|
Text(
|
||||||
|
'${prize.chance}%',
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: _getRarityColor(prize.rarity),
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 10,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PrizeDialog extends StatefulWidget {
|
||||||
|
final Prize prize;
|
||||||
|
|
||||||
|
const PrizeDialog({Key? key, required this.prize}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<PrizeDialog> createState() => _PrizeDialogState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PrizeDialogState extends State<PrizeDialog>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
late AnimationController _controller;
|
||||||
|
late Animation<double> _scaleAnimation;
|
||||||
|
late Animation<double> _fadeAnimation;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_controller = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 500),
|
||||||
|
vsync: this,
|
||||||
|
);
|
||||||
|
|
||||||
|
_scaleAnimation = Tween<double>(
|
||||||
|
begin: 0.5,
|
||||||
|
end: 1.0,
|
||||||
|
).animate(CurvedAnimation(parent: _controller, curve: Curves.elasticOut));
|
||||||
|
|
||||||
|
_fadeAnimation = Tween<double>(
|
||||||
|
begin: 0.0,
|
||||||
|
end: 1.0,
|
||||||
|
).animate(CurvedAnimation(parent: _controller, curve: Curves.easeIn));
|
||||||
|
|
||||||
|
_controller.forward();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_controller.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
Color _getRarityColor(String rarity) {
|
||||||
|
switch (rarity) {
|
||||||
|
case 'Legendary':
|
||||||
|
return const Color(0xFFFFD700);
|
||||||
|
case 'Epic':
|
||||||
|
return const Color(0xFFB429F9);
|
||||||
|
case 'Rare':
|
||||||
|
return const Color(0xFF3B82F6);
|
||||||
|
case 'Uncommon':
|
||||||
|
return const Color(0xFF10B981);
|
||||||
|
default:
|
||||||
|
return const Color(0xFF9CA3AF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return FadeTransition(
|
||||||
|
opacity: _fadeAnimation,
|
||||||
|
child: Dialog(
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
child: ScaleTransition(
|
||||||
|
scale: _scaleAnimation,
|
||||||
|
child: Container(
|
||||||
|
constraints: const BoxConstraints(maxWidth: 320),
|
||||||
|
padding: const EdgeInsets.all(24),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.white,
|
||||||
|
borderRadius: BorderRadius.circular(24),
|
||||||
|
border: Border.all(
|
||||||
|
color: _getRarityColor(widget.prize.rarity),
|
||||||
|
width: 4,
|
||||||
|
),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: _getRarityColor(widget.prize.rarity).withOpacity(0.5),
|
||||||
|
blurRadius: 30,
|
||||||
|
offset: const Offset(0, 10),
|
||||||
|
spreadRadius: 2,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Text('🎉', style: const TextStyle(fontSize: 50)),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
Text(
|
||||||
|
'Selamat!',
|
||||||
|
style: AppStyle.h4.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
'Kamu mendapatkan',
|
||||||
|
style: AppStyle.sm.copyWith(color: AppColor.textSecondary),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
Text(widget.prize.icon, style: const TextStyle(fontSize: 60)),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 14,
|
||||||
|
vertical: 6,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: _getRarityColor(widget.prize.rarity),
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: _getRarityColor(
|
||||||
|
widget.prize.rarity,
|
||||||
|
).withOpacity(0.4),
|
||||||
|
blurRadius: 10,
|
||||||
|
offset: const Offset(0, 4),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
widget.prize.rarity.toUpperCase(),
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
letterSpacing: 1.2,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 16),
|
||||||
|
Text(
|
||||||
|
widget.prize.name,
|
||||||
|
style: AppStyle.h5.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12,
|
||||||
|
vertical: 4,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.primary.withOpacity(0.1),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
widget.prize.type,
|
||||||
|
style: AppStyle.xs.copyWith(
|
||||||
|
color: AppColor.primary,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 24),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () => Navigator.pop(context),
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 14),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
colors: AppColor.primaryGradient,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: AppColor.primary.withOpacity(0.4),
|
||||||
|
blurRadius: 12,
|
||||||
|
offset: const Offset(0, 4),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'Tutup',
|
||||||
|
style: AppStyle.md.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Prize {
|
||||||
|
final String name;
|
||||||
|
final String type;
|
||||||
|
final int value;
|
||||||
|
final String rarity;
|
||||||
|
final int chance;
|
||||||
|
final String icon;
|
||||||
|
|
||||||
|
Prize({
|
||||||
|
required this.name,
|
||||||
|
required this.type,
|
||||||
|
required this.value,
|
||||||
|
required this.rarity,
|
||||||
|
required this.chance,
|
||||||
|
required this.icon,
|
||||||
|
});
|
||||||
|
}
|
||||||
541
lib/presentation/pages/point/point_page.dart
Normal file
541
lib/presentation/pages/point/point_page.dart
Normal file
@ -0,0 +1,541 @@
|
|||||||
|
import 'package:auto_route/auto_route.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'dart:math' as math;
|
||||||
|
|
||||||
|
import '../../../common/constant/app_constant.dart';
|
||||||
|
import '../../../common/theme/theme.dart';
|
||||||
|
|
||||||
|
@RoutePage()
|
||||||
|
class PointPage extends StatefulWidget {
|
||||||
|
const PointPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<PointPage> createState() => _PointPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PointPageState extends State<PointPage> {
|
||||||
|
int _currentPage = 0;
|
||||||
|
final PageController _pageController = PageController(viewportFraction: 1.0);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
// Pink Header with overlapping elements
|
||||||
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: [
|
||||||
|
// Pink Background
|
||||||
|
Container(
|
||||||
|
height: 320,
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
gradient: LinearGradient(
|
||||||
|
begin: Alignment.topCenter,
|
||||||
|
end: Alignment.bottomCenter,
|
||||||
|
colors: [
|
||||||
|
AppColor.primary.withOpacity(0.8),
|
||||||
|
AppColor.primary,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: SafeArea(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(24.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// Back Button
|
||||||
|
Container(
|
||||||
|
width: 56,
|
||||||
|
height: 56,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white.withOpacity(0.3),
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
child: IconButton(
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.arrow_back,
|
||||||
|
color: Colors.white,
|
||||||
|
size: 28,
|
||||||
|
),
|
||||||
|
onPressed: () => Navigator.pop(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 32),
|
||||||
|
|
||||||
|
// Title
|
||||||
|
Text(
|
||||||
|
'Kelola ${AppConstant.poinName} kamu!',
|
||||||
|
style: AppStyle.h3.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
// Subtitle
|
||||||
|
Text(
|
||||||
|
'Bisa kumpulin dan tukar dari sini.',
|
||||||
|
style: AppStyle.md.copyWith(
|
||||||
|
color: AppColor.white.withOpacity(0.9),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
// Point Card - Overlapping
|
||||||
|
Positioned(
|
||||||
|
top: 280,
|
||||||
|
left: 24,
|
||||||
|
right: 24,
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.all(20),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.white,
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.black.withOpacity(0.1),
|
||||||
|
blurRadius: 10,
|
||||||
|
offset: const Offset(0, 2),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 56,
|
||||||
|
height: 56,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: AppColor.primary,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
child: const Icon(
|
||||||
|
Icons.card_giftcard,
|
||||||
|
color: Colors.white,
|
||||||
|
size: 32,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 16),
|
||||||
|
Text(
|
||||||
|
'50 ${AppConstant.poinName}',
|
||||||
|
style: AppStyle.h4.copyWith(
|
||||||
|
color: AppColor.primary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
|
||||||
|
// Black Section
|
||||||
|
const SizedBox(height: 100),
|
||||||
|
|
||||||
|
Container(
|
||||||
|
color: Colors.white,
|
||||||
|
width: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
// Title Section
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 24.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Tukar ${AppConstant.poinName} buat seru-seruan',
|
||||||
|
style: AppStyle.h4.copyWith(
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 40),
|
||||||
|
|
||||||
|
// PageView - Show 2 items per page
|
||||||
|
SizedBox(
|
||||||
|
height: 340,
|
||||||
|
child: PageView(
|
||||||
|
controller: _pageController,
|
||||||
|
|
||||||
|
onPageChanged: (index) {
|
||||||
|
setState(() {
|
||||||
|
_currentPage = index;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
// Page 1 - 2 cards
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: _buildRewardCard(
|
||||||
|
title: 'Main Gift Arena\nsekarang!',
|
||||||
|
subtitle: 'Dapetin s.d. 1jt Coins!',
|
||||||
|
buttonText: 'Pakai 50 💎',
|
||||||
|
isWheel: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: _buildRewardCard(
|
||||||
|
title: 'Putar untuk\nHarapan',
|
||||||
|
subtitle: 'GoPay Pet',
|
||||||
|
buttonText: 'Pakai 5 💎',
|
||||||
|
isWheel: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
// Page 2 - 2 cards
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: _buildRewardCard(
|
||||||
|
title: 'Spin & Win\nHadiah!',
|
||||||
|
subtitle: 'Kesempatan menang besar!',
|
||||||
|
buttonText: 'Pakai 30 💎',
|
||||||
|
isWheel: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: _buildRewardCard(
|
||||||
|
title: 'Lucky Draw\nBerhadiah',
|
||||||
|
subtitle: 'Coba keberuntungan!',
|
||||||
|
buttonText: 'Pakai 20 💎',
|
||||||
|
isWheel: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
// Page 3 - 1 card
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: _buildRewardCard(
|
||||||
|
title: 'Mega Prize\nWheel',
|
||||||
|
subtitle: 'Hadiah hingga 10jt!',
|
||||||
|
buttonText: 'Pakai 100 💎',
|
||||||
|
isWheel: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Spacer(), // Empty space for alignment
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
|
||||||
|
// Indicators - 3 pages
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: List.generate(3, (index) {
|
||||||
|
return AnimatedContainer(
|
||||||
|
duration: const Duration(milliseconds: 300),
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 4),
|
||||||
|
width: _currentPage == index ? 28 : 8,
|
||||||
|
height: 8,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: _currentPage == index
|
||||||
|
? AppColor.primary
|
||||||
|
: Colors.grey.withOpacity(0.3),
|
||||||
|
borderRadius: BorderRadius.circular(4),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 40),
|
||||||
|
|
||||||
|
// Bottom Text
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 24.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Ada banyak cara dapet ${AppConstant.poinName}',
|
||||||
|
style: AppStyle.h5.copyWith(
|
||||||
|
color: AppColor.textPrimary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
'Mulai dari main game sampai nonton video.',
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
color: AppColor.textLight,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 60),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildRewardCard({
|
||||||
|
required String title,
|
||||||
|
required String subtitle,
|
||||||
|
required String buttonText,
|
||||||
|
required bool isWheel,
|
||||||
|
}) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 16),
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 20),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: const Color(0xFF2D2D2D),
|
||||||
|
borderRadius: BorderRadius.circular(24),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
// Icon
|
||||||
|
Container(
|
||||||
|
width: 120,
|
||||||
|
height: 120,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: isWheel
|
||||||
|
? const Color(0xFF4FC3F7)
|
||||||
|
: const Color(0xFFFFC107),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color:
|
||||||
|
(isWheel
|
||||||
|
? const Color(0xFF4FC3F7)
|
||||||
|
: const Color(0xFFFFC107))
|
||||||
|
.withOpacity(0.3),
|
||||||
|
blurRadius: 20,
|
||||||
|
spreadRadius: 5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
width: 120,
|
||||||
|
height: 120,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
child: isWheel
|
||||||
|
? CustomPaint(painter: WheelPainter())
|
||||||
|
: CustomPaint(painter: CoinPainter()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
|
||||||
|
Text(
|
||||||
|
title,
|
||||||
|
style: AppStyle.md.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
height: 1.3,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 6),
|
||||||
|
|
||||||
|
Text(
|
||||||
|
subtitle,
|
||||||
|
style: AppStyle.sm.copyWith(color: AppColor.textLight),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(height: 18),
|
||||||
|
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () {},
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: AppColor.primary,
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12,
|
||||||
|
vertical: 12,
|
||||||
|
),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
elevation: 0,
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
buttonText,
|
||||||
|
style: AppStyle.sm.copyWith(
|
||||||
|
color: AppColor.white,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WheelPainter extends CustomPainter {
|
||||||
|
@override
|
||||||
|
void paint(Canvas canvas, Size size) {
|
||||||
|
final center = Offset(size.width / 2, size.height / 2);
|
||||||
|
final radius = size.width / 2;
|
||||||
|
|
||||||
|
// Draw wheel segments
|
||||||
|
final paint = Paint()..style = PaintingStyle.fill;
|
||||||
|
|
||||||
|
const segments = 8;
|
||||||
|
final sweepAngle = (2 * math.pi) / segments;
|
||||||
|
|
||||||
|
for (int i = 0; i < segments; i++) {
|
||||||
|
paint.color = i.isEven
|
||||||
|
? const Color(0xFF2196F3)
|
||||||
|
: const Color(0xFF90CAF9);
|
||||||
|
|
||||||
|
canvas.drawArc(
|
||||||
|
Rect.fromCircle(center: center, radius: radius * 0.9),
|
||||||
|
i * sweepAngle,
|
||||||
|
sweepAngle,
|
||||||
|
true,
|
||||||
|
paint,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw center circle
|
||||||
|
paint.color = const Color(0xFFFFEB3B);
|
||||||
|
canvas.drawCircle(center, radius * 0.25, paint);
|
||||||
|
|
||||||
|
// Draw pointer at top
|
||||||
|
final pointerPaint = Paint()
|
||||||
|
..color = const Color(0xFFE91E63)
|
||||||
|
..style = PaintingStyle.fill;
|
||||||
|
|
||||||
|
final pointerPath = Path();
|
||||||
|
pointerPath.moveTo(center.dx, radius * 0.15);
|
||||||
|
pointerPath.lineTo(center.dx - radius * 0.15, 0);
|
||||||
|
pointerPath.lineTo(center.dx + radius * 0.15, 0);
|
||||||
|
pointerPath.close();
|
||||||
|
|
||||||
|
canvas.drawPath(pointerPath, pointerPaint);
|
||||||
|
|
||||||
|
// Draw white border on pointer
|
||||||
|
final borderPaint = Paint()
|
||||||
|
..color = Colors.white
|
||||||
|
..style = PaintingStyle.stroke
|
||||||
|
..strokeWidth = 3;
|
||||||
|
canvas.drawPath(pointerPath, borderPaint);
|
||||||
|
|
||||||
|
// Draw dots around edge
|
||||||
|
paint.color = const Color(0xFF4FC3F7);
|
||||||
|
for (int i = 0; i < 12; i++) {
|
||||||
|
final angle = (i * 2 * math.pi) / 12;
|
||||||
|
final x = center.dx + radius * 0.95 * math.cos(angle);
|
||||||
|
final y = center.dy + radius * 0.95 * math.sin(angle);
|
||||||
|
canvas.drawCircle(Offset(x, y), 4, paint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CoinPainter extends CustomPainter {
|
||||||
|
@override
|
||||||
|
void paint(Canvas canvas, Size size) {
|
||||||
|
final center = Offset(size.width / 2, size.height / 2);
|
||||||
|
final radius = size.width / 2;
|
||||||
|
|
||||||
|
// Draw outer ring
|
||||||
|
final ringPaint = Paint()
|
||||||
|
..color = const Color(0xFFD4A418)
|
||||||
|
..style = PaintingStyle.stroke
|
||||||
|
..strokeWidth = 8;
|
||||||
|
canvas.drawCircle(center, radius * 0.85, ringPaint);
|
||||||
|
|
||||||
|
// Draw inner circle
|
||||||
|
final innerPaint = Paint()
|
||||||
|
..color = const Color(0xFFFFC107)
|
||||||
|
..style = PaintingStyle.fill;
|
||||||
|
canvas.drawCircle(center, radius * 0.75, innerPaint);
|
||||||
|
|
||||||
|
// Draw center ring symbol
|
||||||
|
final centerRingPaint = Paint()
|
||||||
|
..color = const Color(0xFFD4A418)
|
||||||
|
..style = PaintingStyle.stroke
|
||||||
|
..strokeWidth = 6;
|
||||||
|
canvas.drawCircle(center, radius * 0.35, centerRingPaint);
|
||||||
|
|
||||||
|
// Draw small colored dots around
|
||||||
|
final colors = [
|
||||||
|
Colors.red,
|
||||||
|
Colors.blue,
|
||||||
|
Colors.green,
|
||||||
|
Colors.purple,
|
||||||
|
Colors.orange,
|
||||||
|
Colors.pink,
|
||||||
|
];
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
final angle = (i * 2 * math.pi) / 6;
|
||||||
|
final x = center.dx + radius * 0.6 * math.cos(angle);
|
||||||
|
final y = center.dy + radius * 0.6 * math.sin(angle);
|
||||||
|
|
||||||
|
final dotPaint = Paint()
|
||||||
|
..color = colors[i]
|
||||||
|
..style = PaintingStyle.fill;
|
||||||
|
canvas.drawCircle(Offset(x, y), 6, dotPaint);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw numbers around edge
|
||||||
|
final textPainter = TextPainter(
|
||||||
|
textDirection: TextDirection.ltr,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
);
|
||||||
|
|
||||||
|
for (int i = 0; i < 12; i++) {
|
||||||
|
final angle = (i * 2 * math.pi) / 12 - math.pi / 2;
|
||||||
|
final x = center.dx + radius * 0.85 * math.cos(angle);
|
||||||
|
final y = center.dy + radius * 0.85 * math.sin(angle);
|
||||||
|
|
||||||
|
textPainter.text = TextSpan(
|
||||||
|
text: '${(i + 1) * 10}',
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Color(0xFFD4A418),
|
||||||
|
fontSize: 10,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
textPainter.layout();
|
||||||
|
textPainter.paint(
|
||||||
|
canvas,
|
||||||
|
Offset(x - textPainter.width / 2, y - textPainter.height / 2),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
|
||||||
|
}
|
||||||
@ -35,8 +35,11 @@ class AppRouter extends RootStackRouter {
|
|||||||
AutoRoute(page: MerchantDetailRoute.page),
|
AutoRoute(page: MerchantDetailRoute.page),
|
||||||
|
|
||||||
// Point
|
// Point
|
||||||
AutoRoute(page: PoinRoute.page),
|
AutoRoute(page: PointRoute.page),
|
||||||
AutoRoute(page: PoinHistoryRoute.page),
|
|
||||||
|
// Coint
|
||||||
|
AutoRoute(page: CoinRoute.page),
|
||||||
|
AutoRoute(page: CoinHistoryRoute.page),
|
||||||
AutoRoute(page: ProductRedeemRoute.page),
|
AutoRoute(page: ProductRedeemRoute.page),
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
@ -70,5 +73,6 @@ class AppRouter extends RootStackRouter {
|
|||||||
|
|
||||||
// Mini Games
|
// Mini Games
|
||||||
AutoRoute(page: FerrisWheelRoute.page),
|
AutoRoute(page: FerrisWheelRoute.page),
|
||||||
|
AutoRoute(page: MisteryBoxRoute.page),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,74 +9,77 @@
|
|||||||
// 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:auto_route/auto_route.dart' as _i33;
|
import 'package:auto_route/auto_route.dart' as _i35;
|
||||||
import 'package:enaklo/presentation/pages/account/account_my/account_my_page.dart'
|
import 'package:enaklo/presentation/pages/account/account_my/account_my_page.dart'
|
||||||
as _i1;
|
as _i1;
|
||||||
import 'package:enaklo/presentation/pages/account/address/address_page.dart'
|
import 'package:enaklo/presentation/pages/account/address/address_page.dart'
|
||||||
as _i2;
|
as _i2;
|
||||||
import 'package:enaklo/presentation/pages/account/payment/payment_page.dart'
|
import 'package:enaklo/presentation/pages/account/payment/payment_page.dart'
|
||||||
as _i22;
|
as _i25;
|
||||||
import 'package:enaklo/presentation/pages/auth/create_password/create_password_page.dart'
|
import 'package:enaklo/presentation/pages/auth/create_password/create_password_page.dart'
|
||||||
as _i3;
|
|
||||||
import 'package:enaklo/presentation/pages/auth/login/login_page.dart' as _i12;
|
|
||||||
import 'package:enaklo/presentation/pages/auth/otp/otp_page.dart' as _i20;
|
|
||||||
import 'package:enaklo/presentation/pages/auth/password/password_page.dart'
|
|
||||||
as _i21;
|
|
||||||
import 'package:enaklo/presentation/pages/auth/pin/pin_page.dart' as _i23;
|
|
||||||
import 'package:enaklo/presentation/pages/auth/register/register_page.dart'
|
|
||||||
as _i28;
|
|
||||||
import 'package:enaklo/presentation/pages/draw/draw_page.dart' as _i7;
|
|
||||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/draw_detail_page.dart'
|
|
||||||
as _i4;
|
|
||||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_info_page.dart'
|
|
||||||
as _i5;
|
as _i5;
|
||||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_my_number_page.dart'
|
import 'package:enaklo/presentation/pages/auth/login/login_page.dart' as _i14;
|
||||||
as _i6;
|
import 'package:enaklo/presentation/pages/auth/otp/otp_page.dart' as _i23;
|
||||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_today_page.dart'
|
import 'package:enaklo/presentation/pages/auth/password/password_page.dart'
|
||||||
as _i8;
|
|
||||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_winner_page.dart'
|
|
||||||
as _i9;
|
|
||||||
import 'package:enaklo/presentation/pages/main/main_page.dart' as _i13;
|
|
||||||
import 'package:enaklo/presentation/pages/main/pages/home/home_page.dart'
|
|
||||||
as _i11;
|
|
||||||
import 'package:enaklo/presentation/pages/main/pages/order/order_page.dart'
|
|
||||||
as _i19;
|
|
||||||
import 'package:enaklo/presentation/pages/main/pages/profile/profile_page.dart'
|
|
||||||
as _i27;
|
|
||||||
import 'package:enaklo/presentation/pages/main/pages/voucher/voucher_page.dart'
|
|
||||||
as _i32;
|
|
||||||
import 'package:enaklo/presentation/pages/merchant/merchant_page.dart' as _i15;
|
|
||||||
import 'package:enaklo/presentation/pages/merchant/pages/merchant_detail/merchant_detail_page.dart'
|
|
||||||
as _i14;
|
|
||||||
import 'package:enaklo/presentation/pages/mini_games/ferris_wheel/ferris_wheel_page.dart'
|
|
||||||
as _i10;
|
|
||||||
import 'package:enaklo/presentation/pages/notification/notification_page.dart'
|
|
||||||
as _i16;
|
|
||||||
import 'package:enaklo/presentation/pages/onboarding/onboarding_page.dart'
|
|
||||||
as _i17;
|
|
||||||
import 'package:enaklo/presentation/pages/order/order_detail/order_detail_page.dart'
|
|
||||||
as _i18;
|
|
||||||
import 'package:enaklo/presentation/pages/poin/pages/poin_history_page.dart'
|
|
||||||
as _i24;
|
as _i24;
|
||||||
import 'package:enaklo/presentation/pages/poin/pages/product_redeem/product_redeem_page.dart'
|
import 'package:enaklo/presentation/pages/auth/pin/pin_page.dart' as _i26;
|
||||||
as _i26;
|
import 'package:enaklo/presentation/pages/auth/register/register_page.dart'
|
||||||
import 'package:enaklo/presentation/pages/poin/poin_page.dart' as _i25;
|
as _i30;
|
||||||
import 'package:enaklo/presentation/pages/reward/reward_page.dart' as _i29;
|
import 'package:enaklo/presentation/pages/coin/coin_page.dart' as _i4;
|
||||||
import 'package:enaklo/presentation/pages/splash/splash_page.dart' as _i30;
|
import 'package:enaklo/presentation/pages/coin/pages/coin_history_page.dart'
|
||||||
|
as _i3;
|
||||||
|
import 'package:enaklo/presentation/pages/coin/pages/product_redeem/product_redeem_page.dart'
|
||||||
|
as _i28;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/draw_page.dart' as _i9;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/draw_detail_page.dart'
|
||||||
|
as _i6;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_info_page.dart'
|
||||||
|
as _i7;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_my_number_page.dart'
|
||||||
|
as _i8;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_today_page.dart'
|
||||||
|
as _i10;
|
||||||
|
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/pages/draw_winner_page.dart'
|
||||||
|
as _i11;
|
||||||
|
import 'package:enaklo/presentation/pages/main/main_page.dart' as _i15;
|
||||||
|
import 'package:enaklo/presentation/pages/main/pages/home/home_page.dart'
|
||||||
|
as _i13;
|
||||||
|
import 'package:enaklo/presentation/pages/main/pages/order/order_page.dart'
|
||||||
|
as _i22;
|
||||||
|
import 'package:enaklo/presentation/pages/main/pages/profile/profile_page.dart'
|
||||||
|
as _i29;
|
||||||
|
import 'package:enaklo/presentation/pages/main/pages/voucher/voucher_page.dart'
|
||||||
|
as _i34;
|
||||||
|
import 'package:enaklo/presentation/pages/merchant/merchant_page.dart' as _i17;
|
||||||
|
import 'package:enaklo/presentation/pages/merchant/pages/merchant_detail/merchant_detail_page.dart'
|
||||||
|
as _i16;
|
||||||
|
import 'package:enaklo/presentation/pages/mini_games/ferris_wheel/ferris_wheel_page.dart'
|
||||||
|
as _i12;
|
||||||
|
import 'package:enaklo/presentation/pages/mini_games/mistery_box/mistery_box_page.dart'
|
||||||
|
as _i18;
|
||||||
|
import 'package:enaklo/presentation/pages/notification/notification_page.dart'
|
||||||
|
as _i19;
|
||||||
|
import 'package:enaklo/presentation/pages/onboarding/onboarding_page.dart'
|
||||||
|
as _i20;
|
||||||
|
import 'package:enaklo/presentation/pages/order/order_detail/order_detail_page.dart'
|
||||||
|
as _i21;
|
||||||
|
import 'package:enaklo/presentation/pages/point/point_page.dart' as _i27;
|
||||||
|
import 'package:enaklo/presentation/pages/reward/reward_page.dart' as _i31;
|
||||||
|
import 'package:enaklo/presentation/pages/splash/splash_page.dart' as _i32;
|
||||||
import 'package:enaklo/presentation/pages/voucher/voucher_detail/voucher_detail_page.dart'
|
import 'package:enaklo/presentation/pages/voucher/voucher_detail/voucher_detail_page.dart'
|
||||||
as _i31;
|
as _i33;
|
||||||
import 'package:enaklo/sample/sample_data.dart' as _i35;
|
import 'package:enaklo/sample/sample_data.dart' as _i37;
|
||||||
import 'package:flutter/material.dart' as _i34;
|
import 'package:flutter/material.dart' as _i36;
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i1.AccountMyPage]
|
/// [_i1.AccountMyPage]
|
||||||
class AccountMyRoute extends _i33.PageRouteInfo<void> {
|
class AccountMyRoute extends _i35.PageRouteInfo<void> {
|
||||||
const AccountMyRoute({List<_i33.PageRouteInfo>? children})
|
const AccountMyRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(AccountMyRoute.name, initialChildren: children);
|
: super(AccountMyRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'AccountMyRoute';
|
static const String name = 'AccountMyRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i1.AccountMyPage();
|
return const _i1.AccountMyPage();
|
||||||
@ -86,13 +89,13 @@ class AccountMyRoute extends _i33.PageRouteInfo<void> {
|
|||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i2.AddressPage]
|
/// [_i2.AddressPage]
|
||||||
class AddressRoute extends _i33.PageRouteInfo<void> {
|
class AddressRoute extends _i35.PageRouteInfo<void> {
|
||||||
const AddressRoute({List<_i33.PageRouteInfo>? children})
|
const AddressRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(AddressRoute.name, initialChildren: children);
|
: super(AddressRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'AddressRoute';
|
static const String name = 'AddressRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i2.AddressPage();
|
return const _i2.AddressPage();
|
||||||
@ -101,12 +104,44 @@ class AddressRoute extends _i33.PageRouteInfo<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i3.CreatePasswordPage]
|
/// [_i3.CoinHistoryPage]
|
||||||
class CreatePasswordRoute extends _i33.PageRouteInfo<CreatePasswordRouteArgs> {
|
class CoinHistoryRoute extends _i35.PageRouteInfo<void> {
|
||||||
|
const CoinHistoryRoute({List<_i35.PageRouteInfo>? children})
|
||||||
|
: super(CoinHistoryRoute.name, initialChildren: children);
|
||||||
|
|
||||||
|
static const String name = 'CoinHistoryRoute';
|
||||||
|
|
||||||
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const _i3.CoinHistoryPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [_i4.CoinPage]
|
||||||
|
class CoinRoute extends _i35.PageRouteInfo<void> {
|
||||||
|
const CoinRoute({List<_i35.PageRouteInfo>? children})
|
||||||
|
: super(CoinRoute.name, initialChildren: children);
|
||||||
|
|
||||||
|
static const String name = 'CoinRoute';
|
||||||
|
|
||||||
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const _i4.CoinPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [_i5.CreatePasswordPage]
|
||||||
|
class CreatePasswordRoute extends _i35.PageRouteInfo<CreatePasswordRouteArgs> {
|
||||||
CreatePasswordRoute({
|
CreatePasswordRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required String registrationToken,
|
required String registrationToken,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
CreatePasswordRoute.name,
|
CreatePasswordRoute.name,
|
||||||
args: CreatePasswordRouteArgs(
|
args: CreatePasswordRouteArgs(
|
||||||
@ -118,12 +153,12 @@ class CreatePasswordRoute extends _i33.PageRouteInfo<CreatePasswordRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'CreatePasswordRoute';
|
static const String name = 'CreatePasswordRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<CreatePasswordRouteArgs>();
|
final args = data.argsAs<CreatePasswordRouteArgs>();
|
||||||
return _i33.WrappedRoute(
|
return _i35.WrappedRoute(
|
||||||
child: _i3.CreatePasswordPage(
|
child: _i5.CreatePasswordPage(
|
||||||
key: args.key,
|
key: args.key,
|
||||||
registrationToken: args.registrationToken,
|
registrationToken: args.registrationToken,
|
||||||
),
|
),
|
||||||
@ -135,7 +170,7 @@ class CreatePasswordRoute extends _i33.PageRouteInfo<CreatePasswordRouteArgs> {
|
|||||||
class CreatePasswordRouteArgs {
|
class CreatePasswordRouteArgs {
|
||||||
const CreatePasswordRouteArgs({this.key, required this.registrationToken});
|
const CreatePasswordRouteArgs({this.key, required this.registrationToken});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final String registrationToken;
|
final String registrationToken;
|
||||||
|
|
||||||
@ -146,172 +181,172 @@ class CreatePasswordRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i4.DrawDetailPage]
|
/// [_i6.DrawDetailPage]
|
||||||
class DrawDetailRoute extends _i33.PageRouteInfo<void> {
|
class DrawDetailRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawDetailRoute({List<_i33.PageRouteInfo>? children})
|
const DrawDetailRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawDetailRoute.name, initialChildren: children);
|
: super(DrawDetailRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawDetailRoute';
|
static const String name = 'DrawDetailRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i4.DrawDetailPage();
|
return const _i6.DrawDetailPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i5.DrawInfoPage]
|
/// [_i7.DrawInfoPage]
|
||||||
class DrawInfoRoute extends _i33.PageRouteInfo<void> {
|
class DrawInfoRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawInfoRoute({List<_i33.PageRouteInfo>? children})
|
const DrawInfoRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawInfoRoute.name, initialChildren: children);
|
: super(DrawInfoRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawInfoRoute';
|
static const String name = 'DrawInfoRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i5.DrawInfoPage();
|
return const _i7.DrawInfoPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i6.DrawMyNumberPage]
|
/// [_i8.DrawMyNumberPage]
|
||||||
class DrawMyNumberRoute extends _i33.PageRouteInfo<void> {
|
class DrawMyNumberRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawMyNumberRoute({List<_i33.PageRouteInfo>? children})
|
const DrawMyNumberRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawMyNumberRoute.name, initialChildren: children);
|
: super(DrawMyNumberRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawMyNumberRoute';
|
static const String name = 'DrawMyNumberRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i6.DrawMyNumberPage();
|
return const _i8.DrawMyNumberPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i7.DrawPage]
|
/// [_i9.DrawPage]
|
||||||
class DrawRoute extends _i33.PageRouteInfo<void> {
|
class DrawRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawRoute({List<_i33.PageRouteInfo>? children})
|
const DrawRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawRoute.name, initialChildren: children);
|
: super(DrawRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawRoute';
|
static const String name = 'DrawRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i7.DrawPage();
|
return const _i9.DrawPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i8.DrawTodayPage]
|
/// [_i10.DrawTodayPage]
|
||||||
class DrawTodayRoute extends _i33.PageRouteInfo<void> {
|
class DrawTodayRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawTodayRoute({List<_i33.PageRouteInfo>? children})
|
const DrawTodayRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawTodayRoute.name, initialChildren: children);
|
: super(DrawTodayRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawTodayRoute';
|
static const String name = 'DrawTodayRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i8.DrawTodayPage();
|
return const _i10.DrawTodayPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i9.DrawWinnerPage]
|
/// [_i11.DrawWinnerPage]
|
||||||
class DrawWinnerRoute extends _i33.PageRouteInfo<void> {
|
class DrawWinnerRoute extends _i35.PageRouteInfo<void> {
|
||||||
const DrawWinnerRoute({List<_i33.PageRouteInfo>? children})
|
const DrawWinnerRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(DrawWinnerRoute.name, initialChildren: children);
|
: super(DrawWinnerRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'DrawWinnerRoute';
|
static const String name = 'DrawWinnerRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i9.DrawWinnerPage();
|
return const _i11.DrawWinnerPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i10.FerrisWheelPage]
|
/// [_i12.FerrisWheelPage]
|
||||||
class FerrisWheelRoute extends _i33.PageRouteInfo<void> {
|
class FerrisWheelRoute extends _i35.PageRouteInfo<void> {
|
||||||
const FerrisWheelRoute({List<_i33.PageRouteInfo>? children})
|
const FerrisWheelRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(FerrisWheelRoute.name, initialChildren: children);
|
: super(FerrisWheelRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'FerrisWheelRoute';
|
static const String name = 'FerrisWheelRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return _i33.WrappedRoute(child: const _i10.FerrisWheelPage());
|
return _i35.WrappedRoute(child: const _i12.FerrisWheelPage());
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i11.HomePage]
|
/// [_i13.HomePage]
|
||||||
class HomeRoute extends _i33.PageRouteInfo<void> {
|
class HomeRoute extends _i35.PageRouteInfo<void> {
|
||||||
const HomeRoute({List<_i33.PageRouteInfo>? children})
|
const HomeRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(HomeRoute.name, initialChildren: children);
|
: super(HomeRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'HomeRoute';
|
static const String name = 'HomeRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i11.HomePage();
|
return const _i13.HomePage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i12.LoginPage]
|
/// [_i14.LoginPage]
|
||||||
class LoginRoute extends _i33.PageRouteInfo<void> {
|
class LoginRoute extends _i35.PageRouteInfo<void> {
|
||||||
const LoginRoute({List<_i33.PageRouteInfo>? children})
|
const LoginRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(LoginRoute.name, initialChildren: children);
|
: super(LoginRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'LoginRoute';
|
static const String name = 'LoginRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return _i33.WrappedRoute(child: const _i12.LoginPage());
|
return _i35.WrappedRoute(child: const _i14.LoginPage());
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i13.MainPage]
|
/// [_i15.MainPage]
|
||||||
class MainRoute extends _i33.PageRouteInfo<void> {
|
class MainRoute extends _i35.PageRouteInfo<void> {
|
||||||
const MainRoute({List<_i33.PageRouteInfo>? children})
|
const MainRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(MainRoute.name, initialChildren: children);
|
: super(MainRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'MainRoute';
|
static const String name = 'MainRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i13.MainPage();
|
return const _i15.MainPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i14.MerchantDetailPage]
|
/// [_i16.MerchantDetailPage]
|
||||||
class MerchantDetailRoute extends _i33.PageRouteInfo<MerchantDetailRouteArgs> {
|
class MerchantDetailRoute extends _i35.PageRouteInfo<MerchantDetailRouteArgs> {
|
||||||
MerchantDetailRoute({
|
MerchantDetailRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required _i35.MerchantModel merchant,
|
required _i37.MerchantModel merchant,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
MerchantDetailRoute.name,
|
MerchantDetailRoute.name,
|
||||||
args: MerchantDetailRouteArgs(key: key, merchant: merchant),
|
args: MerchantDetailRouteArgs(key: key, merchant: merchant),
|
||||||
@ -320,11 +355,11 @@ class MerchantDetailRoute extends _i33.PageRouteInfo<MerchantDetailRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'MerchantDetailRoute';
|
static const String name = 'MerchantDetailRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<MerchantDetailRouteArgs>();
|
final args = data.argsAs<MerchantDetailRouteArgs>();
|
||||||
return _i14.MerchantDetailPage(key: args.key, merchant: args.merchant);
|
return _i16.MerchantDetailPage(key: args.key, merchant: args.merchant);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -332,9 +367,9 @@ class MerchantDetailRoute extends _i33.PageRouteInfo<MerchantDetailRouteArgs> {
|
|||||||
class MerchantDetailRouteArgs {
|
class MerchantDetailRouteArgs {
|
||||||
const MerchantDetailRouteArgs({this.key, required this.merchant});
|
const MerchantDetailRouteArgs({this.key, required this.merchant});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final _i35.MerchantModel merchant;
|
final _i37.MerchantModel merchant;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
@ -343,60 +378,76 @@ class MerchantDetailRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i15.MerchantPage]
|
/// [_i17.MerchantPage]
|
||||||
class MerchantRoute extends _i33.PageRouteInfo<void> {
|
class MerchantRoute extends _i35.PageRouteInfo<void> {
|
||||||
const MerchantRoute({List<_i33.PageRouteInfo>? children})
|
const MerchantRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(MerchantRoute.name, initialChildren: children);
|
: super(MerchantRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'MerchantRoute';
|
static const String name = 'MerchantRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i15.MerchantPage();
|
return const _i17.MerchantPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i16.NotificationPage]
|
/// [_i18.MisteryBoxPage]
|
||||||
class NotificationRoute extends _i33.PageRouteInfo<void> {
|
class MisteryBoxRoute extends _i35.PageRouteInfo<void> {
|
||||||
const NotificationRoute({List<_i33.PageRouteInfo>? children})
|
const MisteryBoxRoute({List<_i35.PageRouteInfo>? children})
|
||||||
|
: super(MisteryBoxRoute.name, initialChildren: children);
|
||||||
|
|
||||||
|
static const String name = 'MisteryBoxRoute';
|
||||||
|
|
||||||
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
|
name,
|
||||||
|
builder: (data) {
|
||||||
|
return const _i18.MisteryBoxPage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// generated route for
|
||||||
|
/// [_i19.NotificationPage]
|
||||||
|
class NotificationRoute extends _i35.PageRouteInfo<void> {
|
||||||
|
const NotificationRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(NotificationRoute.name, initialChildren: children);
|
: super(NotificationRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'NotificationRoute';
|
static const String name = 'NotificationRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i16.NotificationPage();
|
return const _i19.NotificationPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i17.OnboardingPage]
|
/// [_i20.OnboardingPage]
|
||||||
class OnboardingRoute extends _i33.PageRouteInfo<void> {
|
class OnboardingRoute extends _i35.PageRouteInfo<void> {
|
||||||
const OnboardingRoute({List<_i33.PageRouteInfo>? children})
|
const OnboardingRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(OnboardingRoute.name, initialChildren: children);
|
: super(OnboardingRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'OnboardingRoute';
|
static const String name = 'OnboardingRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i17.OnboardingPage();
|
return const _i20.OnboardingPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i18.OrderDetailPage]
|
/// [_i21.OrderDetailPage]
|
||||||
class OrderDetailRoute extends _i33.PageRouteInfo<OrderDetailRouteArgs> {
|
class OrderDetailRoute extends _i35.PageRouteInfo<OrderDetailRouteArgs> {
|
||||||
OrderDetailRoute({
|
OrderDetailRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required _i19.Order order,
|
required _i22.Order order,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
OrderDetailRoute.name,
|
OrderDetailRoute.name,
|
||||||
args: OrderDetailRouteArgs(key: key, order: order),
|
args: OrderDetailRouteArgs(key: key, order: order),
|
||||||
@ -405,11 +456,11 @@ class OrderDetailRoute extends _i33.PageRouteInfo<OrderDetailRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'OrderDetailRoute';
|
static const String name = 'OrderDetailRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<OrderDetailRouteArgs>();
|
final args = data.argsAs<OrderDetailRouteArgs>();
|
||||||
return _i18.OrderDetailPage(key: args.key, order: args.order);
|
return _i21.OrderDetailPage(key: args.key, order: args.order);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -417,9 +468,9 @@ class OrderDetailRoute extends _i33.PageRouteInfo<OrderDetailRouteArgs> {
|
|||||||
class OrderDetailRouteArgs {
|
class OrderDetailRouteArgs {
|
||||||
const OrderDetailRouteArgs({this.key, required this.order});
|
const OrderDetailRouteArgs({this.key, required this.order});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final _i19.Order order;
|
final _i22.Order order;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
@ -428,29 +479,29 @@ class OrderDetailRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i19.OrderPage]
|
/// [_i22.OrderPage]
|
||||||
class OrderRoute extends _i33.PageRouteInfo<void> {
|
class OrderRoute extends _i35.PageRouteInfo<void> {
|
||||||
const OrderRoute({List<_i33.PageRouteInfo>? children})
|
const OrderRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(OrderRoute.name, initialChildren: children);
|
: super(OrderRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'OrderRoute';
|
static const String name = 'OrderRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i19.OrderPage();
|
return const _i22.OrderPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i20.OtpPage]
|
/// [_i23.OtpPage]
|
||||||
class OtpRoute extends _i33.PageRouteInfo<OtpRouteArgs> {
|
class OtpRoute extends _i35.PageRouteInfo<OtpRouteArgs> {
|
||||||
OtpRoute({
|
OtpRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required String registrationToken,
|
required String registrationToken,
|
||||||
required String phoneNumber,
|
required String phoneNumber,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
OtpRoute.name,
|
OtpRoute.name,
|
||||||
args: OtpRouteArgs(
|
args: OtpRouteArgs(
|
||||||
@ -463,12 +514,12 @@ class OtpRoute extends _i33.PageRouteInfo<OtpRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'OtpRoute';
|
static const String name = 'OtpRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<OtpRouteArgs>();
|
final args = data.argsAs<OtpRouteArgs>();
|
||||||
return _i33.WrappedRoute(
|
return _i35.WrappedRoute(
|
||||||
child: _i20.OtpPage(
|
child: _i23.OtpPage(
|
||||||
key: args.key,
|
key: args.key,
|
||||||
registrationToken: args.registrationToken,
|
registrationToken: args.registrationToken,
|
||||||
phoneNumber: args.phoneNumber,
|
phoneNumber: args.phoneNumber,
|
||||||
@ -485,7 +536,7 @@ class OtpRouteArgs {
|
|||||||
required this.phoneNumber,
|
required this.phoneNumber,
|
||||||
});
|
});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final String registrationToken;
|
final String registrationToken;
|
||||||
|
|
||||||
@ -498,12 +549,12 @@ class OtpRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i21.PasswordPage]
|
/// [_i24.PasswordPage]
|
||||||
class PasswordRoute extends _i33.PageRouteInfo<PasswordRouteArgs> {
|
class PasswordRoute extends _i35.PageRouteInfo<PasswordRouteArgs> {
|
||||||
PasswordRoute({
|
PasswordRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required String phoneNumber,
|
required String phoneNumber,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
PasswordRoute.name,
|
PasswordRoute.name,
|
||||||
args: PasswordRouteArgs(key: key, phoneNumber: phoneNumber),
|
args: PasswordRouteArgs(key: key, phoneNumber: phoneNumber),
|
||||||
@ -512,12 +563,12 @@ class PasswordRoute extends _i33.PageRouteInfo<PasswordRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'PasswordRoute';
|
static const String name = 'PasswordRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<PasswordRouteArgs>();
|
final args = data.argsAs<PasswordRouteArgs>();
|
||||||
return _i33.WrappedRoute(
|
return _i35.WrappedRoute(
|
||||||
child: _i21.PasswordPage(key: args.key, phoneNumber: args.phoneNumber),
|
child: _i24.PasswordPage(key: args.key, phoneNumber: args.phoneNumber),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -526,7 +577,7 @@ class PasswordRoute extends _i33.PageRouteInfo<PasswordRouteArgs> {
|
|||||||
class PasswordRouteArgs {
|
class PasswordRouteArgs {
|
||||||
const PasswordRouteArgs({this.key, required this.phoneNumber});
|
const PasswordRouteArgs({this.key, required this.phoneNumber});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final String phoneNumber;
|
final String phoneNumber;
|
||||||
|
|
||||||
@ -537,29 +588,29 @@ class PasswordRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i22.PaymentPage]
|
/// [_i25.PaymentPage]
|
||||||
class PaymentRoute extends _i33.PageRouteInfo<void> {
|
class PaymentRoute extends _i35.PageRouteInfo<void> {
|
||||||
const PaymentRoute({List<_i33.PageRouteInfo>? children})
|
const PaymentRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(PaymentRoute.name, initialChildren: children);
|
: super(PaymentRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'PaymentRoute';
|
static const String name = 'PaymentRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i22.PaymentPage();
|
return const _i25.PaymentPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i23.PinPage]
|
/// [_i26.PinPage]
|
||||||
class PinRoute extends _i33.PageRouteInfo<PinRouteArgs> {
|
class PinRoute extends _i35.PageRouteInfo<PinRouteArgs> {
|
||||||
PinRoute({
|
PinRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
bool isCreatePin = true,
|
bool isCreatePin = true,
|
||||||
String? title,
|
String? title,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
PinRoute.name,
|
PinRoute.name,
|
||||||
args: PinRouteArgs(key: key, isCreatePin: isCreatePin, title: title),
|
args: PinRouteArgs(key: key, isCreatePin: isCreatePin, title: title),
|
||||||
@ -568,13 +619,13 @@ class PinRoute extends _i33.PageRouteInfo<PinRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'PinRoute';
|
static const String name = 'PinRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<PinRouteArgs>(
|
final args = data.argsAs<PinRouteArgs>(
|
||||||
orElse: () => const PinRouteArgs(),
|
orElse: () => const PinRouteArgs(),
|
||||||
);
|
);
|
||||||
return _i23.PinPage(
|
return _i26.PinPage(
|
||||||
key: args.key,
|
key: args.key,
|
||||||
isCreatePin: args.isCreatePin,
|
isCreatePin: args.isCreatePin,
|
||||||
title: args.title,
|
title: args.title,
|
||||||
@ -586,7 +637,7 @@ class PinRoute extends _i33.PageRouteInfo<PinRouteArgs> {
|
|||||||
class PinRouteArgs {
|
class PinRouteArgs {
|
||||||
const PinRouteArgs({this.key, this.isCreatePin = true, this.title});
|
const PinRouteArgs({this.key, this.isCreatePin = true, this.title});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final bool isCreatePin;
|
final bool isCreatePin;
|
||||||
|
|
||||||
@ -599,45 +650,29 @@ class PinRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i24.PoinHistoryPage]
|
/// [_i27.PointPage]
|
||||||
class PoinHistoryRoute extends _i33.PageRouteInfo<void> {
|
class PointRoute extends _i35.PageRouteInfo<void> {
|
||||||
const PoinHistoryRoute({List<_i33.PageRouteInfo>? children})
|
const PointRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(PoinHistoryRoute.name, initialChildren: children);
|
: super(PointRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'PoinHistoryRoute';
|
static const String name = 'PointRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i24.PoinHistoryPage();
|
return const _i27.PointPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i25.PoinPage]
|
/// [_i28.ProductRedeemPage]
|
||||||
class PoinRoute extends _i33.PageRouteInfo<void> {
|
class ProductRedeemRoute extends _i35.PageRouteInfo<ProductRedeemRouteArgs> {
|
||||||
const PoinRoute({List<_i33.PageRouteInfo>? children})
|
|
||||||
: super(PoinRoute.name, initialChildren: children);
|
|
||||||
|
|
||||||
static const String name = 'PoinRoute';
|
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
|
||||||
name,
|
|
||||||
builder: (data) {
|
|
||||||
return const _i25.PoinPage();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// generated route for
|
|
||||||
/// [_i26.ProductRedeemPage]
|
|
||||||
class ProductRedeemRoute extends _i33.PageRouteInfo<ProductRedeemRouteArgs> {
|
|
||||||
ProductRedeemRoute({
|
ProductRedeemRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required _i25.Product product,
|
required _i4.Product product,
|
||||||
required _i25.PointCard pointCard,
|
required _i4.PointCard pointCard,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
ProductRedeemRoute.name,
|
ProductRedeemRoute.name,
|
||||||
args: ProductRedeemRouteArgs(
|
args: ProductRedeemRouteArgs(
|
||||||
@ -650,11 +685,11 @@ class ProductRedeemRoute extends _i33.PageRouteInfo<ProductRedeemRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'ProductRedeemRoute';
|
static const String name = 'ProductRedeemRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<ProductRedeemRouteArgs>();
|
final args = data.argsAs<ProductRedeemRouteArgs>();
|
||||||
return _i26.ProductRedeemPage(
|
return _i28.ProductRedeemPage(
|
||||||
key: args.key,
|
key: args.key,
|
||||||
product: args.product,
|
product: args.product,
|
||||||
pointCard: args.pointCard,
|
pointCard: args.pointCard,
|
||||||
@ -670,11 +705,11 @@ class ProductRedeemRouteArgs {
|
|||||||
required this.pointCard,
|
required this.pointCard,
|
||||||
});
|
});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final _i25.Product product;
|
final _i4.Product product;
|
||||||
|
|
||||||
final _i25.PointCard pointCard;
|
final _i4.PointCard pointCard;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
@ -683,28 +718,28 @@ class ProductRedeemRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i27.ProfilePage]
|
/// [_i29.ProfilePage]
|
||||||
class ProfileRoute extends _i33.PageRouteInfo<void> {
|
class ProfileRoute extends _i35.PageRouteInfo<void> {
|
||||||
const ProfileRoute({List<_i33.PageRouteInfo>? children})
|
const ProfileRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(ProfileRoute.name, initialChildren: children);
|
: super(ProfileRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'ProfileRoute';
|
static const String name = 'ProfileRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return _i33.WrappedRoute(child: const _i27.ProfilePage());
|
return _i35.WrappedRoute(child: const _i29.ProfilePage());
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i28.RegisterPage]
|
/// [_i30.RegisterPage]
|
||||||
class RegisterRoute extends _i33.PageRouteInfo<RegisterRouteArgs> {
|
class RegisterRoute extends _i35.PageRouteInfo<RegisterRouteArgs> {
|
||||||
RegisterRoute({
|
RegisterRoute({
|
||||||
_i34.Key? key,
|
_i36.Key? key,
|
||||||
required String phoneNumber,
|
required String phoneNumber,
|
||||||
List<_i33.PageRouteInfo>? children,
|
List<_i35.PageRouteInfo>? children,
|
||||||
}) : super(
|
}) : super(
|
||||||
RegisterRoute.name,
|
RegisterRoute.name,
|
||||||
args: RegisterRouteArgs(key: key, phoneNumber: phoneNumber),
|
args: RegisterRouteArgs(key: key, phoneNumber: phoneNumber),
|
||||||
@ -713,12 +748,12 @@ class RegisterRoute extends _i33.PageRouteInfo<RegisterRouteArgs> {
|
|||||||
|
|
||||||
static const String name = 'RegisterRoute';
|
static const String name = 'RegisterRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
final args = data.argsAs<RegisterRouteArgs>();
|
final args = data.argsAs<RegisterRouteArgs>();
|
||||||
return _i33.WrappedRoute(
|
return _i35.WrappedRoute(
|
||||||
child: _i28.RegisterPage(key: args.key, phoneNumber: args.phoneNumber),
|
child: _i30.RegisterPage(key: args.key, phoneNumber: args.phoneNumber),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -727,7 +762,7 @@ class RegisterRoute extends _i33.PageRouteInfo<RegisterRouteArgs> {
|
|||||||
class RegisterRouteArgs {
|
class RegisterRouteArgs {
|
||||||
const RegisterRouteArgs({this.key, required this.phoneNumber});
|
const RegisterRouteArgs({this.key, required this.phoneNumber});
|
||||||
|
|
||||||
final _i34.Key? key;
|
final _i36.Key? key;
|
||||||
|
|
||||||
final String phoneNumber;
|
final String phoneNumber;
|
||||||
|
|
||||||
@ -738,65 +773,65 @@ class RegisterRouteArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i29.RewardPage]
|
/// [_i31.RewardPage]
|
||||||
class RewardRoute extends _i33.PageRouteInfo<void> {
|
class RewardRoute extends _i35.PageRouteInfo<void> {
|
||||||
const RewardRoute({List<_i33.PageRouteInfo>? children})
|
const RewardRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(RewardRoute.name, initialChildren: children);
|
: super(RewardRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'RewardRoute';
|
static const String name = 'RewardRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i29.RewardPage();
|
return const _i31.RewardPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i30.SplashPage]
|
/// [_i32.SplashPage]
|
||||||
class SplashRoute extends _i33.PageRouteInfo<void> {
|
class SplashRoute extends _i35.PageRouteInfo<void> {
|
||||||
const SplashRoute({List<_i33.PageRouteInfo>? children})
|
const SplashRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(SplashRoute.name, initialChildren: children);
|
: super(SplashRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'SplashRoute';
|
static const String name = 'SplashRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i30.SplashPage();
|
return const _i32.SplashPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i31.VoucherDetailPage]
|
/// [_i33.VoucherDetailPage]
|
||||||
class VoucherDetailRoute extends _i33.PageRouteInfo<void> {
|
class VoucherDetailRoute extends _i35.PageRouteInfo<void> {
|
||||||
const VoucherDetailRoute({List<_i33.PageRouteInfo>? children})
|
const VoucherDetailRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(VoucherDetailRoute.name, initialChildren: children);
|
: super(VoucherDetailRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'VoucherDetailRoute';
|
static const String name = 'VoucherDetailRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i31.VoucherDetailPage();
|
return const _i33.VoucherDetailPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// generated route for
|
/// generated route for
|
||||||
/// [_i32.VoucherPage]
|
/// [_i34.VoucherPage]
|
||||||
class VoucherRoute extends _i33.PageRouteInfo<void> {
|
class VoucherRoute extends _i35.PageRouteInfo<void> {
|
||||||
const VoucherRoute({List<_i33.PageRouteInfo>? children})
|
const VoucherRoute({List<_i35.PageRouteInfo>? children})
|
||||||
: super(VoucherRoute.name, initialChildren: children);
|
: super(VoucherRoute.name, initialChildren: children);
|
||||||
|
|
||||||
static const String name = 'VoucherRoute';
|
static const String name = 'VoucherRoute';
|
||||||
|
|
||||||
static _i33.PageInfo page = _i33.PageInfo(
|
static _i35.PageInfo page = _i35.PageInfo(
|
||||||
name,
|
name,
|
||||||
builder: (data) {
|
builder: (data) {
|
||||||
return const _i32.VoucherPage();
|
return const _i34.VoucherPage();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
platform :osx, '10.14'
|
platform :osx, '10.15'
|
||||||
|
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
||||||
|
|||||||
@ -461,7 +461,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
SWIFT_COMPILATION_MODE = wholemodule;
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
@ -543,7 +543,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
@ -593,7 +593,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
SWIFT_COMPILATION_MODE = wholemodule;
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
|||||||
20
pubspec.lock
20
pubspec.lock
@ -668,26 +668,26 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.9"
|
version: "11.0.2"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.9"
|
version: "3.0.10"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.2"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1121,10 +1121,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.4"
|
version: "0.7.6"
|
||||||
time:
|
time:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1249,10 +1249,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.2.0"
|
||||||
vm_service:
|
vm_service:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user