feat: ferris wheel page
This commit is contained in:
parent
4d994e303b
commit
0d1e516686
184
lib/common/painter/wheel_painter.dart
Normal file
184
lib/common/painter/wheel_painter.dart
Normal file
@ -0,0 +1,184 @@
|
||||
import 'dart:math' as math;
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../presentation/pages/mini_games/ferris_wheel/data/model.dart';
|
||||
import '../theme/theme.dart';
|
||||
|
||||
class WheelPainter extends CustomPainter {
|
||||
final List<WheelSection> sections;
|
||||
|
||||
WheelPainter({required this.sections});
|
||||
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
final center = Offset(size.width / 2, size.height / 2);
|
||||
final radius = size.width / 2;
|
||||
final sectionAngle = 2 * math.pi / sections.length;
|
||||
|
||||
// Draw outer white border
|
||||
final outerBorderPaint = Paint()
|
||||
..color = Colors.white
|
||||
..style = PaintingStyle.fill;
|
||||
canvas.drawCircle(center, radius, outerBorderPaint);
|
||||
|
||||
// Draw blue border ring
|
||||
final blueBorderPaint = Paint()
|
||||
..color = const Color(0xFF3B82F6)
|
||||
..style = PaintingStyle.fill;
|
||||
canvas.drawCircle(center, radius - 8, blueBorderPaint);
|
||||
|
||||
// Draw inner white circle
|
||||
final innerWhitePaint = Paint()
|
||||
..color = Colors.white
|
||||
..style = PaintingStyle.fill;
|
||||
canvas.drawCircle(center, radius - 20, innerWhitePaint);
|
||||
|
||||
// Draw sections
|
||||
for (int i = 0; i < sections.length; i++) {
|
||||
final startAngle = i * sectionAngle - math.pi / 2;
|
||||
|
||||
// Section background
|
||||
final sectionPaint = Paint()
|
||||
..color = sections[i].color
|
||||
..style = PaintingStyle.fill;
|
||||
|
||||
canvas.drawArc(
|
||||
Rect.fromCircle(center: center, radius: radius - 22),
|
||||
startAngle,
|
||||
sectionAngle,
|
||||
true,
|
||||
sectionPaint,
|
||||
);
|
||||
|
||||
// Draw icon in each section
|
||||
final iconAngle = startAngle + sectionAngle / 2;
|
||||
final iconPosition = Offset(
|
||||
center.dx + (radius - 60) * math.cos(iconAngle),
|
||||
center.dy + (radius - 60) * math.sin(iconAngle),
|
||||
);
|
||||
|
||||
// Draw icon background circle
|
||||
final iconBgPaint = Paint()
|
||||
..color = Colors.white
|
||||
..style = PaintingStyle.fill;
|
||||
canvas.drawCircle(iconPosition, 16, iconBgPaint);
|
||||
|
||||
// Save canvas state for icon drawing
|
||||
canvas.save();
|
||||
canvas.translate(iconPosition.dx, iconPosition.dy);
|
||||
|
||||
// Draw icon using TextPainter to simulate Icon widget
|
||||
final iconText = _getIconText(sections[i].icon);
|
||||
final iconTextPainter = TextPainter(
|
||||
text: TextSpan(
|
||||
text: iconText,
|
||||
style: TextStyle(
|
||||
fontFamily: 'MaterialIcons',
|
||||
fontSize: 20,
|
||||
color: sections[i].color,
|
||||
fontWeight: FontWeight.normal,
|
||||
),
|
||||
),
|
||||
textDirection: TextDirection.ltr,
|
||||
);
|
||||
iconTextPainter.layout();
|
||||
iconTextPainter.paint(
|
||||
canvas,
|
||||
Offset(-iconTextPainter.width / 2, -iconTextPainter.height / 2),
|
||||
);
|
||||
|
||||
canvas.restore();
|
||||
|
||||
// Draw prize text
|
||||
final textAngle = startAngle + sectionAngle / 2;
|
||||
final textPosition = Offset(
|
||||
center.dx + (radius - 100) * math.cos(textAngle),
|
||||
center.dy + (radius - 100) * math.sin(textAngle),
|
||||
);
|
||||
|
||||
// Save canvas state for text rotation
|
||||
canvas.save();
|
||||
canvas.translate(textPosition.dx, textPosition.dy);
|
||||
canvas.rotate(textAngle + math.pi / 2);
|
||||
|
||||
final textPainter = TextPainter(
|
||||
text: TextSpan(
|
||||
text: sections[i].prize,
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 10,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
textDirection: TextDirection.ltr,
|
||||
);
|
||||
textPainter.layout();
|
||||
textPainter.paint(
|
||||
canvas,
|
||||
Offset(-textPainter.width / 2, -textPainter.height / 2),
|
||||
);
|
||||
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
// Draw white dots around the outer edge
|
||||
final dotPaint = Paint()
|
||||
..color = Colors.white
|
||||
..style = PaintingStyle.fill;
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
final dotAngle = (2 * math.pi / 24) * i;
|
||||
final dotPosition = Offset(
|
||||
center.dx + (radius - 14) * math.cos(dotAngle),
|
||||
center.dy + (radius - 14) * math.sin(dotAngle),
|
||||
);
|
||||
canvas.drawCircle(dotPosition, 3, dotPaint);
|
||||
}
|
||||
|
||||
// Draw section dividers
|
||||
final dividerPaint = Paint()
|
||||
..color = AppColor.white
|
||||
..style = PaintingStyle.stroke
|
||||
..strokeWidth = 2;
|
||||
|
||||
for (int i = 0; i < sections.length; i++) {
|
||||
final angle = i * sectionAngle - math.pi / 2;
|
||||
final lineStart = Offset(
|
||||
center.dx + (radius - 130) * math.cos(angle),
|
||||
center.dy + (radius - 130) * math.sin(angle),
|
||||
);
|
||||
final lineEnd = Offset(
|
||||
center.dx + (radius - 22) * math.cos(angle),
|
||||
center.dy + (radius - 22) * math.sin(angle),
|
||||
);
|
||||
canvas.drawLine(lineStart, lineEnd, dividerPaint);
|
||||
}
|
||||
}
|
||||
|
||||
String _getIconText(IconData icon) {
|
||||
// Convert IconData to Unicode string for drawing
|
||||
switch (icon.codePoint) {
|
||||
case 0xe8f4: // Icons.visibility
|
||||
return String.fromCharCode(0xe8f4);
|
||||
case 0xe8f5: // Icons.visibility_off
|
||||
return String.fromCharCode(0xe8f5);
|
||||
case 0xe850: // Icons.account_balance_wallet
|
||||
return String.fromCharCode(0xe850);
|
||||
case 0xe151: // Icons.card_giftcard
|
||||
return String.fromCharCode(0xe151);
|
||||
case 0xe5d5: // Icons.refresh
|
||||
return String.fromCharCode(0xe5d5);
|
||||
case 0xe263: // Icons.attach_money
|
||||
return String.fromCharCode(0xe263);
|
||||
case 0xe8a1: // Icons.redeem
|
||||
return String.fromCharCode(0xe8a1);
|
||||
case 0xe57d: // Icons.monetization_on
|
||||
return String.fromCharCode(0xe57d);
|
||||
default:
|
||||
return String.fromCharCode(0xe87c); // Default star icon
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
|
||||
}
|
||||
@ -31,6 +31,12 @@ class HomeFeatureSection extends StatelessWidget {
|
||||
iconColor: const Color(0xFF388E3C),
|
||||
onTap: () => context.router.push(MerchantRoute()),
|
||||
),
|
||||
HomeFeatureCard(
|
||||
icon: Icons.blur_circular,
|
||||
title: 'Wheels',
|
||||
iconColor: const Color(0xFF388E3C),
|
||||
onTap: () => context.router.push(FerrisWheelRoute()),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class WheelSection {
|
||||
final Color color;
|
||||
final IconData icon;
|
||||
final String prize;
|
||||
final int value;
|
||||
|
||||
WheelSection({
|
||||
required this.color,
|
||||
required this.icon,
|
||||
required this.prize,
|
||||
required this.value,
|
||||
});
|
||||
}
|
||||
|
||||
class PrizeHistory {
|
||||
final String prize;
|
||||
final DateTime dateTime;
|
||||
final int value;
|
||||
final Color color;
|
||||
final IconData icon;
|
||||
|
||||
PrizeHistory({
|
||||
required this.prize,
|
||||
required this.dateTime,
|
||||
required this.value,
|
||||
required this.color,
|
||||
required this.icon,
|
||||
});
|
||||
}
|
||||
@ -0,0 +1,924 @@
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math' as math;
|
||||
|
||||
import '../../../../common/theme/theme.dart';
|
||||
import '../../../../common/painter/wheel_painter.dart';
|
||||
import 'data/model.dart';
|
||||
|
||||
@RoutePage()
|
||||
class FerrisWheelPage extends StatefulWidget {
|
||||
const FerrisWheelPage({super.key});
|
||||
|
||||
@override
|
||||
State<FerrisWheelPage> createState() => _FerrisWheelPageState();
|
||||
}
|
||||
|
||||
class _FerrisWheelPageState extends State<FerrisWheelPage>
|
||||
with TickerProviderStateMixin {
|
||||
late AnimationController _rotationController;
|
||||
late AnimationController _glowController;
|
||||
late AnimationController _pulseController;
|
||||
late AnimationController _idleRotationController;
|
||||
|
||||
Animation<double>? _spinAnimation;
|
||||
Animation<double>? _pulseAnimation;
|
||||
Animation<double>? _idleRotationAnimation;
|
||||
|
||||
int tokens = 3;
|
||||
bool isSpinning = false;
|
||||
String resultText = 'Belum pernah spin';
|
||||
double currentRotation = 0.0;
|
||||
int currentTabIndex = 0;
|
||||
|
||||
List<PrizeHistory> prizeHistory = [];
|
||||
|
||||
List<WheelSection> wheelSections = [
|
||||
WheelSection(
|
||||
color: AppColor.primary,
|
||||
icon: Icons.visibility,
|
||||
prize: '1 JT',
|
||||
value: 1000000,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.info,
|
||||
icon: Icons.account_balance_wallet,
|
||||
prize: '10RB',
|
||||
value: 10000,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.warning,
|
||||
icon: Icons.card_giftcard,
|
||||
prize: '50',
|
||||
value: 50,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.success,
|
||||
icon: Icons.refresh,
|
||||
prize: 'SPIN',
|
||||
value: 1,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.primaryDark,
|
||||
icon: Icons.visibility,
|
||||
prize: '30',
|
||||
value: 30,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.textLight,
|
||||
icon: Icons.attach_money,
|
||||
prize: '5RB',
|
||||
value: 5000,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.secondary,
|
||||
icon: Icons.redeem,
|
||||
prize: '20',
|
||||
value: 20,
|
||||
),
|
||||
WheelSection(
|
||||
color: AppColor.info,
|
||||
icon: Icons.monetization_on,
|
||||
prize: '5RB',
|
||||
value: 5000,
|
||||
),
|
||||
];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
// Initialize animation controllers
|
||||
_rotationController = AnimationController(
|
||||
duration: const Duration(seconds: 4),
|
||||
vsync: this,
|
||||
);
|
||||
|
||||
_glowController = AnimationController(
|
||||
duration: const Duration(milliseconds: 2000),
|
||||
vsync: this,
|
||||
);
|
||||
|
||||
_pulseController = AnimationController(
|
||||
duration: const Duration(milliseconds: 800),
|
||||
vsync: this,
|
||||
);
|
||||
|
||||
_idleRotationController = AnimationController(
|
||||
duration: const Duration(seconds: 10), // 10 detik per putaran
|
||||
vsync: this,
|
||||
);
|
||||
|
||||
// Initialize animations
|
||||
_pulseAnimation = Tween<double>(begin: 1.0, end: 1.1).animate(
|
||||
CurvedAnimation(parent: _pulseController, curve: Curves.easeInOut),
|
||||
);
|
||||
|
||||
_idleRotationAnimation = Tween<double>(
|
||||
begin: 0.0,
|
||||
end: 2 * math.pi,
|
||||
).animate(_idleRotationController);
|
||||
|
||||
// Start animations
|
||||
_glowController.repeat(reverse: true);
|
||||
_pulseController.repeat(reverse: true);
|
||||
_idleRotationController.repeat();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_rotationController.dispose();
|
||||
_glowController.dispose();
|
||||
_pulseController.dispose();
|
||||
_idleRotationController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void _spinWheel() {
|
||||
if (isSpinning || tokens <= 0) return;
|
||||
|
||||
setState(() {
|
||||
isSpinning = true;
|
||||
tokens--;
|
||||
resultText = 'Sedang berputar...';
|
||||
});
|
||||
|
||||
// Stop idle rotation
|
||||
_idleRotationController.stop();
|
||||
|
||||
int targetSection = math.Random().nextInt(8);
|
||||
double sectionAngle = (2 * math.pi) / 8;
|
||||
double targetAngle = (targetSection * sectionAngle) + (sectionAngle / 2);
|
||||
double baseRotations = 4 + math.Random().nextDouble() * 3;
|
||||
|
||||
// Calculate current total rotation
|
||||
double currentIdleRotation = _idleRotationAnimation?.value ?? 0.0;
|
||||
double finalRotation =
|
||||
currentRotation +
|
||||
currentIdleRotation +
|
||||
(baseRotations * 2 * math.pi) +
|
||||
targetAngle;
|
||||
|
||||
_spinAnimation =
|
||||
Tween<double>(
|
||||
begin: currentRotation + currentIdleRotation,
|
||||
end: finalRotation,
|
||||
).animate(
|
||||
CurvedAnimation(
|
||||
parent: _rotationController,
|
||||
curve: Curves.easeOutCubic,
|
||||
),
|
||||
);
|
||||
|
||||
_rotationController.reset();
|
||||
_rotationController.animateTo(1.0).then((_) {
|
||||
setState(() {
|
||||
currentRotation = finalRotation;
|
||||
isSpinning = false;
|
||||
resultText =
|
||||
'Selamat! Anda mendapat ${wheelSections[targetSection].prize}!';
|
||||
|
||||
prizeHistory.insert(
|
||||
0,
|
||||
PrizeHistory(
|
||||
prize: wheelSections[targetSection].prize,
|
||||
dateTime: DateTime.now(),
|
||||
value: wheelSections[targetSection].value,
|
||||
color: wheelSections[targetSection].color,
|
||||
icon: wheelSections[targetSection].icon,
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
_showWinDialog(wheelSections[targetSection]);
|
||||
|
||||
// Restart idle rotation
|
||||
_idleRotationController.reset();
|
||||
_idleRotationController.repeat();
|
||||
});
|
||||
}
|
||||
|
||||
void _showWinDialog(WheelSection section) {
|
||||
showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => Dialog(
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(24),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: AppColor.primaryGradient,
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Container(
|
||||
width: 80,
|
||||
height: 80,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(40),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.2),
|
||||
blurRadius: 15,
|
||||
spreadRadius: 2,
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Icon(section.icon, color: section.color, size: 40),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'🎉 Selamat! 🎉',
|
||||
style: AppStyle.h5.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
'Anda mendapatkan',
|
||||
style: AppStyle.lg.copyWith(color: AppColor.textWhite),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
Text(
|
||||
section.prize,
|
||||
style: AppStyle.h5.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
ElevatedButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: AppColor.white,
|
||||
foregroundColor: AppColor.primary,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 30,
|
||||
vertical: 12,
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
'Terima Kasih',
|
||||
style: AppStyle.md.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.primary,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMainContent() {
|
||||
return Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.1),
|
||||
blurRadius: 10,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 40,
|
||||
height: 40,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.primary,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: Center(
|
||||
child: Text(
|
||||
'G',
|
||||
style: AppStyle.lg.copyWith(
|
||||
color: AppColor.textWhite,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'GPY268e42',
|
||||
style: AppStyle.lg.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'Warrior',
|
||||
style: AppStyle.sm.copyWith(
|
||||
color: AppColor.textSecondary,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 20,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.warning,
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Icon(
|
||||
Icons.circle,
|
||||
size: 12,
|
||||
color: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Text(
|
||||
'Token: $tokens',
|
||||
style: AppStyle.lg.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Text(
|
||||
resultText,
|
||||
style: AppStyle.md.copyWith(color: AppColor.textWhite),
|
||||
),
|
||||
|
||||
const SizedBox(height: 20),
|
||||
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
AnimatedBuilder(
|
||||
animation: _glowController,
|
||||
builder: (context, child) {
|
||||
return Container(
|
||||
width: 340,
|
||||
height: 340,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.white.withOpacity(
|
||||
0.3 + 0.2 * _glowController.value,
|
||||
),
|
||||
blurRadius: 40,
|
||||
spreadRadius: 10,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
AnimatedBuilder(
|
||||
animation: isSpinning
|
||||
? _rotationController
|
||||
: _idleRotationController,
|
||||
builder: (context, child) {
|
||||
double rotationAngle;
|
||||
|
||||
if (isSpinning) {
|
||||
rotationAngle = _spinAnimation?.value ?? currentRotation;
|
||||
} else {
|
||||
rotationAngle =
|
||||
currentRotation +
|
||||
(_idleRotationAnimation?.value ?? 0.0);
|
||||
}
|
||||
|
||||
return Transform.rotate(
|
||||
angle: rotationAngle,
|
||||
child: CustomPaint(
|
||||
size: const Size(320, 320),
|
||||
painter: WheelPainter(sections: wheelSections),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
AnimatedBuilder(
|
||||
animation:
|
||||
_pulseAnimation ?? const AlwaysStoppedAnimation(1.0),
|
||||
builder: (context, child) {
|
||||
return Transform.scale(
|
||||
scale: _pulseAnimation?.value ?? 1.0,
|
||||
child: Container(
|
||||
width: 100,
|
||||
height: 100,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [AppColor.warning, AppColor.warning],
|
||||
),
|
||||
shape: BoxShape.circle,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.3),
|
||||
blurRadius: 15,
|
||||
offset: const Offset(0, 6),
|
||||
),
|
||||
BoxShadow(
|
||||
color: AppColor.warning.withOpacity(0.5),
|
||||
blurRadius: 20,
|
||||
spreadRadius: (_pulseAnimation?.value ?? 1.0) * 5,
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
onTap: _spinWheel,
|
||||
child: Center(
|
||||
child: Text(
|
||||
'SPIN',
|
||||
style: AppStyle.lg.copyWith(
|
||||
color: AppColor.textWhite,
|
||||
fontWeight: FontWeight.bold,
|
||||
letterSpacing: 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
Positioned(
|
||||
top: 30,
|
||||
child: Container(
|
||||
width: 0,
|
||||
height: 0,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
left: BorderSide(width: 15, color: Colors.transparent),
|
||||
right: BorderSide(width: 15, color: Colors.transparent),
|
||||
bottom: BorderSide(width: 30, color: AppColor.error),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Container(
|
||||
margin: const EdgeInsets.all(20),
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [AppColor.warning, AppColor.warning],
|
||||
),
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
),
|
||||
child: Text(
|
||||
'❄️ Spin 30x lagi buat mainin spesial spin',
|
||||
textAlign: TextAlign.center,
|
||||
style: AppStyle.lg.copyWith(
|
||||
color: AppColor.textWhite,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildPrizeListContent() {
|
||||
return Container(
|
||||
margin: const EdgeInsets.all(20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.1),
|
||||
blurRadius: 10,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Text(
|
||||
'🎁 Daftar Hadiah',
|
||||
style: AppStyle.h6.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Expanded(
|
||||
child: ListView.builder(
|
||||
itemCount: wheelSections.length,
|
||||
itemBuilder: (context, index) {
|
||||
final section = wheelSections[index];
|
||||
return Container(
|
||||
margin: const EdgeInsets.only(bottom: 12),
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.05),
|
||||
blurRadius: 5,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 50,
|
||||
height: 50,
|
||||
decoration: BoxDecoration(
|
||||
color: section.color,
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Icon(
|
||||
section.icon,
|
||||
color: AppColor.white,
|
||||
size: 24,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
section.prize,
|
||||
style: AppStyle.lg.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'Nilai: ${section.value}',
|
||||
style: AppStyle.sm.copyWith(
|
||||
color: AppColor.textSecondary,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 12,
|
||||
vertical: 6,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: section.color.withOpacity(0.1),
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
),
|
||||
child: Text(
|
||||
'Hadiah',
|
||||
style: AppStyle.sm.copyWith(
|
||||
color: section.color,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildHistoryContent() {
|
||||
return Container(
|
||||
margin: const EdgeInsets.all(20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.1),
|
||||
blurRadius: 10,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Text(
|
||||
'📜 Riwayat Hadiah',
|
||||
style: AppStyle.h6.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Expanded(
|
||||
child: prizeHistory.isEmpty
|
||||
? Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.history,
|
||||
size: 80,
|
||||
color: AppColor.white.withOpacity(0.5),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'Belum ada riwayat spin',
|
||||
style: AppStyle.lg.copyWith(
|
||||
color: AppColor.white.withOpacity(0.7),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
'Mulai spin untuk melihat riwayat hadiah',
|
||||
style: AppStyle.md.copyWith(
|
||||
color: AppColor.white.withOpacity(0.5),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
itemCount: prizeHistory.length,
|
||||
itemBuilder: (context, index) {
|
||||
final history = prizeHistory[index];
|
||||
return Container(
|
||||
margin: const EdgeInsets.only(bottom: 12),
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.black.withOpacity(0.05),
|
||||
blurRadius: 5,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 50,
|
||||
height: 50,
|
||||
decoration: BoxDecoration(
|
||||
color: history.color,
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Icon(
|
||||
history.icon,
|
||||
color: AppColor.white,
|
||||
size: 24,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
history.prize,
|
||||
style: AppStyle.lg.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textPrimary,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'${history.dateTime.day}/${history.dateTime.month}/${history.dateTime.year} ${history.dateTime.hour.toString().padLeft(2, '0')}:${history.dateTime.minute.toString().padLeft(2, '0')}',
|
||||
style: AppStyle.sm.copyWith(
|
||||
color: AppColor.textSecondary,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 12,
|
||||
vertical: 6,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.success.withOpacity(0.1),
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
),
|
||||
child: Text(
|
||||
'Menang',
|
||||
style: AppStyle.sm.copyWith(
|
||||
color: AppColor.success,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: AppColor.primaryGradient,
|
||||
),
|
||||
),
|
||||
child: SafeArea(
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: Row(
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () => context.router.back(),
|
||||
icon: Icon(
|
||||
Icons.close,
|
||||
color: AppColor.textWhite,
|
||||
size: 28,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'SPIN & WIN',
|
||||
style: AppStyle.h6.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColor.textWhite,
|
||||
letterSpacing: 2,
|
||||
),
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {},
|
||||
icon: Icon(Icons.volume_up, color: AppColor.textWhite),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {},
|
||||
icon: Icon(Icons.info_outline, color: AppColor.textWhite),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Container(
|
||||
margin: const EdgeInsets.symmetric(horizontal: 20),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.white.withOpacity(0.2),
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: GestureDetector(
|
||||
onTap: () => setState(() => currentTabIndex = 0),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: currentTabIndex == 0
|
||||
? AppColor.white
|
||||
: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Text(
|
||||
'Spin Wheel',
|
||||
textAlign: TextAlign.center,
|
||||
style: AppStyle.md.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: currentTabIndex == 0
|
||||
? AppColor.primary
|
||||
: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: GestureDetector(
|
||||
onTap: () => setState(() => currentTabIndex = 1),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: currentTabIndex == 1
|
||||
? AppColor.white
|
||||
: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Text(
|
||||
'Daftar Hadiah',
|
||||
textAlign: TextAlign.center,
|
||||
style: AppStyle.md.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: currentTabIndex == 1
|
||||
? AppColor.primary
|
||||
: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: GestureDetector(
|
||||
onTap: () => setState(() => currentTabIndex = 2),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: currentTabIndex == 2
|
||||
? AppColor.white
|
||||
: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
),
|
||||
child: Text(
|
||||
'Riwayat',
|
||||
textAlign: TextAlign.center,
|
||||
style: AppStyle.md.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: currentTabIndex == 2
|
||||
? AppColor.primary
|
||||
: AppColor.textWhite,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
const SizedBox(height: 20),
|
||||
|
||||
Expanded(
|
||||
child: currentTabIndex == 0
|
||||
? _buildMainContent()
|
||||
: currentTabIndex == 1
|
||||
? _buildPrizeListContent()
|
||||
: _buildHistoryContent(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -59,5 +59,8 @@ class AppRouter extends RootStackRouter {
|
||||
AutoRoute(page: AccountMyRoute.page),
|
||||
AutoRoute(page: AddressRoute.page),
|
||||
AutoRoute(page: PaymentRoute.page),
|
||||
|
||||
// Mini Games
|
||||
AutoRoute(page: FerrisWheelRoute.page),
|
||||
];
|
||||
}
|
||||
|
||||
@ -9,64 +9,66 @@
|
||||
// coverage:ignore-file
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:auto_route/auto_route.dart' as _i28;
|
||||
import 'package:auto_route/auto_route.dart' as _i29;
|
||||
import 'package:enaklo/presentation/pages/account/account_my/account_my_page.dart'
|
||||
as _i1;
|
||||
import 'package:enaklo/presentation/pages/account/address/address_page.dart'
|
||||
as _i2;
|
||||
import 'package:enaklo/presentation/pages/account/payment/payment_page.dart'
|
||||
as _i17;
|
||||
as _i18;
|
||||
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 _i7;
|
||||
import 'package:enaklo/presentation/pages/auth/otp/otp_page.dart' as _i15;
|
||||
import 'package:enaklo/presentation/pages/auth/login/login_page.dart' as _i8;
|
||||
import 'package:enaklo/presentation/pages/auth/otp/otp_page.dart' as _i16;
|
||||
import 'package:enaklo/presentation/pages/auth/password/password_page.dart'
|
||||
as _i16;
|
||||
import 'package:enaklo/presentation/pages/auth/pin/pin_page.dart' as _i18;
|
||||
as _i17;
|
||||
import 'package:enaklo/presentation/pages/auth/pin/pin_page.dart' as _i19;
|
||||
import 'package:enaklo/presentation/pages/auth/register/register_page.dart'
|
||||
as _i23;
|
||||
as _i24;
|
||||
import 'package:enaklo/presentation/pages/draw/draw_page.dart' as _i5;
|
||||
import 'package:enaklo/presentation/pages/draw/pages/draw_detail/draw_detail_page.dart'
|
||||
as _i4;
|
||||
import 'package:enaklo/presentation/pages/main/main_page.dart' as _i8;
|
||||
import 'package:enaklo/presentation/pages/main/main_page.dart' as _i9;
|
||||
import 'package:enaklo/presentation/pages/main/pages/home/home_page.dart'
|
||||
as _i6;
|
||||
as _i7;
|
||||
import 'package:enaklo/presentation/pages/main/pages/order/order_page.dart'
|
||||
as _i14;
|
||||
as _i15;
|
||||
import 'package:enaklo/presentation/pages/main/pages/profile/profile_page.dart'
|
||||
as _i22;
|
||||
as _i23;
|
||||
import 'package:enaklo/presentation/pages/main/pages/voucher/voucher_page.dart'
|
||||
as _i27;
|
||||
import 'package:enaklo/presentation/pages/merchant/merchant_page.dart' as _i10;
|
||||
as _i28;
|
||||
import 'package:enaklo/presentation/pages/merchant/merchant_page.dart' as _i11;
|
||||
import 'package:enaklo/presentation/pages/merchant/pages/merchant_detail/merchant_detail_page.dart'
|
||||
as _i9;
|
||||
as _i10;
|
||||
import 'package:enaklo/presentation/pages/mini_games/ferris_wheel/ferris_wheel_page.dart'
|
||||
as _i6;
|
||||
import 'package:enaklo/presentation/pages/notification/notification_page.dart'
|
||||
as _i11;
|
||||
import 'package:enaklo/presentation/pages/onboarding/onboarding_page.dart'
|
||||
as _i12;
|
||||
import 'package:enaklo/presentation/pages/order/order_detail/order_detail_page.dart'
|
||||
import 'package:enaklo/presentation/pages/onboarding/onboarding_page.dart'
|
||||
as _i13;
|
||||
import 'package:enaklo/presentation/pages/order/order_detail/order_detail_page.dart'
|
||||
as _i14;
|
||||
import 'package:enaklo/presentation/pages/poin/pages/poin_history_page.dart'
|
||||
as _i19;
|
||||
as _i20;
|
||||
import 'package:enaklo/presentation/pages/poin/pages/product_redeem/product_redeem_page.dart'
|
||||
as _i21;
|
||||
import 'package:enaklo/presentation/pages/poin/poin_page.dart' as _i20;
|
||||
import 'package:enaklo/presentation/pages/reward/reward_page.dart' as _i24;
|
||||
import 'package:enaklo/presentation/pages/splash/splash_page.dart' as _i25;
|
||||
as _i22;
|
||||
import 'package:enaklo/presentation/pages/poin/poin_page.dart' as _i21;
|
||||
import 'package:enaklo/presentation/pages/reward/reward_page.dart' as _i25;
|
||||
import 'package:enaklo/presentation/pages/splash/splash_page.dart' as _i26;
|
||||
import 'package:enaklo/presentation/pages/voucher/voucher_detail/voucher_detail_page.dart'
|
||||
as _i26;
|
||||
import 'package:enaklo/sample/sample_data.dart' as _i30;
|
||||
import 'package:flutter/material.dart' as _i29;
|
||||
as _i27;
|
||||
import 'package:enaklo/sample/sample_data.dart' as _i31;
|
||||
import 'package:flutter/material.dart' as _i30;
|
||||
|
||||
/// generated route for
|
||||
/// [_i1.AccountMyPage]
|
||||
class AccountMyRoute extends _i28.PageRouteInfo<void> {
|
||||
const AccountMyRoute({List<_i28.PageRouteInfo>? children})
|
||||
class AccountMyRoute extends _i29.PageRouteInfo<void> {
|
||||
const AccountMyRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(AccountMyRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'AccountMyRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i1.AccountMyPage();
|
||||
@ -76,13 +78,13 @@ class AccountMyRoute extends _i28.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i2.AddressPage]
|
||||
class AddressRoute extends _i28.PageRouteInfo<void> {
|
||||
const AddressRoute({List<_i28.PageRouteInfo>? children})
|
||||
class AddressRoute extends _i29.PageRouteInfo<void> {
|
||||
const AddressRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(AddressRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'AddressRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i2.AddressPage();
|
||||
@ -92,13 +94,13 @@ class AddressRoute extends _i28.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i3.CreatePasswordPage]
|
||||
class CreatePasswordRoute extends _i28.PageRouteInfo<void> {
|
||||
const CreatePasswordRoute({List<_i28.PageRouteInfo>? children})
|
||||
class CreatePasswordRoute extends _i29.PageRouteInfo<void> {
|
||||
const CreatePasswordRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(CreatePasswordRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'CreatePasswordRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i3.CreatePasswordPage();
|
||||
@ -108,11 +110,11 @@ class CreatePasswordRoute extends _i28.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i4.DrawDetailPage]
|
||||
class DrawDetailRoute extends _i28.PageRouteInfo<DrawDetailRouteArgs> {
|
||||
class DrawDetailRoute extends _i29.PageRouteInfo<DrawDetailRouteArgs> {
|
||||
DrawDetailRoute({
|
||||
_i29.Key? key,
|
||||
_i30.Key? key,
|
||||
required _i5.DrawEvent drawEvent,
|
||||
List<_i28.PageRouteInfo>? children,
|
||||
List<_i29.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
DrawDetailRoute.name,
|
||||
args: DrawDetailRouteArgs(key: key, drawEvent: drawEvent),
|
||||
@ -121,7 +123,7 @@ class DrawDetailRoute extends _i28.PageRouteInfo<DrawDetailRouteArgs> {
|
||||
|
||||
static const String name = 'DrawDetailRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<DrawDetailRouteArgs>();
|
||||
@ -133,7 +135,7 @@ class DrawDetailRoute extends _i28.PageRouteInfo<DrawDetailRouteArgs> {
|
||||
class DrawDetailRouteArgs {
|
||||
const DrawDetailRouteArgs({this.key, required this.drawEvent});
|
||||
|
||||
final _i29.Key? key;
|
||||
final _i30.Key? key;
|
||||
|
||||
final _i5.DrawEvent drawEvent;
|
||||
|
||||
@ -145,13 +147,13 @@ class DrawDetailRouteArgs {
|
||||
|
||||
/// generated route for
|
||||
/// [_i5.DrawPage]
|
||||
class DrawRoute extends _i28.PageRouteInfo<void> {
|
||||
const DrawRoute({List<_i28.PageRouteInfo>? children})
|
||||
class DrawRoute extends _i29.PageRouteInfo<void> {
|
||||
const DrawRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(DrawRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'DrawRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i5.DrawPage();
|
||||
@ -160,60 +162,76 @@ class DrawRoute extends _i28.PageRouteInfo<void> {
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i6.HomePage]
|
||||
class HomeRoute extends _i28.PageRouteInfo<void> {
|
||||
const HomeRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i6.FerrisWheelPage]
|
||||
class FerrisWheelRoute extends _i29.PageRouteInfo<void> {
|
||||
const FerrisWheelRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(FerrisWheelRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'FerrisWheelRoute';
|
||||
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i6.FerrisWheelPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i7.HomePage]
|
||||
class HomeRoute extends _i29.PageRouteInfo<void> {
|
||||
const HomeRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(HomeRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'HomeRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i6.HomePage();
|
||||
return const _i7.HomePage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i7.LoginPage]
|
||||
class LoginRoute extends _i28.PageRouteInfo<void> {
|
||||
const LoginRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i8.LoginPage]
|
||||
class LoginRoute extends _i29.PageRouteInfo<void> {
|
||||
const LoginRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(LoginRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'LoginRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i7.LoginPage();
|
||||
return const _i8.LoginPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i8.MainPage]
|
||||
class MainRoute extends _i28.PageRouteInfo<void> {
|
||||
const MainRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i9.MainPage]
|
||||
class MainRoute extends _i29.PageRouteInfo<void> {
|
||||
const MainRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(MainRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'MainRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i8.MainPage();
|
||||
return const _i9.MainPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i9.MerchantDetailPage]
|
||||
class MerchantDetailRoute extends _i28.PageRouteInfo<MerchantDetailRouteArgs> {
|
||||
/// [_i10.MerchantDetailPage]
|
||||
class MerchantDetailRoute extends _i29.PageRouteInfo<MerchantDetailRouteArgs> {
|
||||
MerchantDetailRoute({
|
||||
_i29.Key? key,
|
||||
required _i30.MerchantModel merchant,
|
||||
List<_i28.PageRouteInfo>? children,
|
||||
_i30.Key? key,
|
||||
required _i31.MerchantModel merchant,
|
||||
List<_i29.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
MerchantDetailRoute.name,
|
||||
args: MerchantDetailRouteArgs(key: key, merchant: merchant),
|
||||
@ -222,11 +240,11 @@ class MerchantDetailRoute extends _i28.PageRouteInfo<MerchantDetailRouteArgs> {
|
||||
|
||||
static const String name = 'MerchantDetailRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<MerchantDetailRouteArgs>();
|
||||
return _i9.MerchantDetailPage(key: args.key, merchant: args.merchant);
|
||||
return _i10.MerchantDetailPage(key: args.key, merchant: args.merchant);
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -234,9 +252,9 @@ class MerchantDetailRoute extends _i28.PageRouteInfo<MerchantDetailRouteArgs> {
|
||||
class MerchantDetailRouteArgs {
|
||||
const MerchantDetailRouteArgs({this.key, required this.merchant});
|
||||
|
||||
final _i29.Key? key;
|
||||
final _i30.Key? key;
|
||||
|
||||
final _i30.MerchantModel merchant;
|
||||
final _i31.MerchantModel merchant;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
@ -245,60 +263,60 @@ class MerchantDetailRouteArgs {
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i10.MerchantPage]
|
||||
class MerchantRoute extends _i28.PageRouteInfo<void> {
|
||||
const MerchantRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i11.MerchantPage]
|
||||
class MerchantRoute extends _i29.PageRouteInfo<void> {
|
||||
const MerchantRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(MerchantRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'MerchantRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i10.MerchantPage();
|
||||
return const _i11.MerchantPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i11.NotificationPage]
|
||||
class NotificationRoute extends _i28.PageRouteInfo<void> {
|
||||
const NotificationRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i12.NotificationPage]
|
||||
class NotificationRoute extends _i29.PageRouteInfo<void> {
|
||||
const NotificationRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(NotificationRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'NotificationRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i11.NotificationPage();
|
||||
return const _i12.NotificationPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i12.OnboardingPage]
|
||||
class OnboardingRoute extends _i28.PageRouteInfo<void> {
|
||||
const OnboardingRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i13.OnboardingPage]
|
||||
class OnboardingRoute extends _i29.PageRouteInfo<void> {
|
||||
const OnboardingRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(OnboardingRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'OnboardingRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i12.OnboardingPage();
|
||||
return const _i13.OnboardingPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i13.OrderDetailPage]
|
||||
class OrderDetailRoute extends _i28.PageRouteInfo<OrderDetailRouteArgs> {
|
||||
/// [_i14.OrderDetailPage]
|
||||
class OrderDetailRoute extends _i29.PageRouteInfo<OrderDetailRouteArgs> {
|
||||
OrderDetailRoute({
|
||||
_i29.Key? key,
|
||||
required _i14.Order order,
|
||||
List<_i28.PageRouteInfo>? children,
|
||||
_i30.Key? key,
|
||||
required _i15.Order order,
|
||||
List<_i29.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
OrderDetailRoute.name,
|
||||
args: OrderDetailRouteArgs(key: key, order: order),
|
||||
@ -307,11 +325,11 @@ class OrderDetailRoute extends _i28.PageRouteInfo<OrderDetailRouteArgs> {
|
||||
|
||||
static const String name = 'OrderDetailRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<OrderDetailRouteArgs>();
|
||||
return _i13.OrderDetailPage(key: args.key, order: args.order);
|
||||
return _i14.OrderDetailPage(key: args.key, order: args.order);
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -319,9 +337,9 @@ class OrderDetailRoute extends _i28.PageRouteInfo<OrderDetailRouteArgs> {
|
||||
class OrderDetailRouteArgs {
|
||||
const OrderDetailRouteArgs({this.key, required this.order});
|
||||
|
||||
final _i29.Key? key;
|
||||
final _i30.Key? key;
|
||||
|
||||
final _i14.Order order;
|
||||
final _i15.Order order;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
@ -330,77 +348,77 @@ class OrderDetailRouteArgs {
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i14.OrderPage]
|
||||
class OrderRoute extends _i28.PageRouteInfo<void> {
|
||||
const OrderRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i15.OrderPage]
|
||||
class OrderRoute extends _i29.PageRouteInfo<void> {
|
||||
const OrderRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(OrderRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'OrderRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i14.OrderPage();
|
||||
return const _i15.OrderPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i15.OtpPage]
|
||||
class OtpRoute extends _i28.PageRouteInfo<void> {
|
||||
const OtpRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i16.OtpPage]
|
||||
class OtpRoute extends _i29.PageRouteInfo<void> {
|
||||
const OtpRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(OtpRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'OtpRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i15.OtpPage();
|
||||
return const _i16.OtpPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i16.PasswordPage]
|
||||
class PasswordRoute extends _i28.PageRouteInfo<void> {
|
||||
const PasswordRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i17.PasswordPage]
|
||||
class PasswordRoute extends _i29.PageRouteInfo<void> {
|
||||
const PasswordRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(PasswordRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'PasswordRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i16.PasswordPage();
|
||||
return const _i17.PasswordPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i17.PaymentPage]
|
||||
class PaymentRoute extends _i28.PageRouteInfo<void> {
|
||||
const PaymentRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i18.PaymentPage]
|
||||
class PaymentRoute extends _i29.PageRouteInfo<void> {
|
||||
const PaymentRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(PaymentRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'PaymentRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i17.PaymentPage();
|
||||
return const _i18.PaymentPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i18.PinPage]
|
||||
class PinRoute extends _i28.PageRouteInfo<PinRouteArgs> {
|
||||
/// [_i19.PinPage]
|
||||
class PinRoute extends _i29.PageRouteInfo<PinRouteArgs> {
|
||||
PinRoute({
|
||||
_i29.Key? key,
|
||||
_i30.Key? key,
|
||||
bool isCreatePin = true,
|
||||
String? title,
|
||||
List<_i28.PageRouteInfo>? children,
|
||||
List<_i29.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
PinRoute.name,
|
||||
args: PinRouteArgs(key: key, isCreatePin: isCreatePin, title: title),
|
||||
@ -409,13 +427,13 @@ class PinRoute extends _i28.PageRouteInfo<PinRouteArgs> {
|
||||
|
||||
static const String name = 'PinRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<PinRouteArgs>(
|
||||
orElse: () => const PinRouteArgs(),
|
||||
);
|
||||
return _i18.PinPage(
|
||||
return _i19.PinPage(
|
||||
key: args.key,
|
||||
isCreatePin: args.isCreatePin,
|
||||
title: args.title,
|
||||
@ -427,7 +445,7 @@ class PinRoute extends _i28.PageRouteInfo<PinRouteArgs> {
|
||||
class PinRouteArgs {
|
||||
const PinRouteArgs({this.key, this.isCreatePin = true, this.title});
|
||||
|
||||
final _i29.Key? key;
|
||||
final _i30.Key? key;
|
||||
|
||||
final bool isCreatePin;
|
||||
|
||||
@ -440,45 +458,45 @@ class PinRouteArgs {
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i19.PoinHistoryPage]
|
||||
class PoinHistoryRoute extends _i28.PageRouteInfo<void> {
|
||||
const PoinHistoryRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i20.PoinHistoryPage]
|
||||
class PoinHistoryRoute extends _i29.PageRouteInfo<void> {
|
||||
const PoinHistoryRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(PoinHistoryRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'PoinHistoryRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i19.PoinHistoryPage();
|
||||
return const _i20.PoinHistoryPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i20.PoinPage]
|
||||
class PoinRoute extends _i28.PageRouteInfo<void> {
|
||||
const PoinRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i21.PoinPage]
|
||||
class PoinRoute extends _i29.PageRouteInfo<void> {
|
||||
const PoinRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(PoinRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'PoinRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i20.PoinPage();
|
||||
return const _i21.PoinPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i21.ProductRedeemPage]
|
||||
class ProductRedeemRoute extends _i28.PageRouteInfo<ProductRedeemRouteArgs> {
|
||||
/// [_i22.ProductRedeemPage]
|
||||
class ProductRedeemRoute extends _i29.PageRouteInfo<ProductRedeemRouteArgs> {
|
||||
ProductRedeemRoute({
|
||||
_i29.Key? key,
|
||||
required _i20.Product product,
|
||||
required _i20.PointCard pointCard,
|
||||
List<_i28.PageRouteInfo>? children,
|
||||
_i30.Key? key,
|
||||
required _i21.Product product,
|
||||
required _i21.PointCard pointCard,
|
||||
List<_i29.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
ProductRedeemRoute.name,
|
||||
args: ProductRedeemRouteArgs(
|
||||
@ -491,11 +509,11 @@ class ProductRedeemRoute extends _i28.PageRouteInfo<ProductRedeemRouteArgs> {
|
||||
|
||||
static const String name = 'ProductRedeemRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<ProductRedeemRouteArgs>();
|
||||
return _i21.ProductRedeemPage(
|
||||
return _i22.ProductRedeemPage(
|
||||
key: args.key,
|
||||
product: args.product,
|
||||
pointCard: args.pointCard,
|
||||
@ -511,11 +529,11 @@ class ProductRedeemRouteArgs {
|
||||
required this.pointCard,
|
||||
});
|
||||
|
||||
final _i29.Key? key;
|
||||
final _i30.Key? key;
|
||||
|
||||
final _i20.Product product;
|
||||
final _i21.Product product;
|
||||
|
||||
final _i20.PointCard pointCard;
|
||||
final _i21.PointCard pointCard;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
@ -524,97 +542,97 @@ class ProductRedeemRouteArgs {
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i22.ProfilePage]
|
||||
class ProfileRoute extends _i28.PageRouteInfo<void> {
|
||||
const ProfileRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i23.ProfilePage]
|
||||
class ProfileRoute extends _i29.PageRouteInfo<void> {
|
||||
const ProfileRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(ProfileRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'ProfileRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i22.ProfilePage();
|
||||
return const _i23.ProfilePage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i23.RegisterPage]
|
||||
class RegisterRoute extends _i28.PageRouteInfo<void> {
|
||||
const RegisterRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i24.RegisterPage]
|
||||
class RegisterRoute extends _i29.PageRouteInfo<void> {
|
||||
const RegisterRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(RegisterRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'RegisterRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i23.RegisterPage();
|
||||
return const _i24.RegisterPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i24.RewardPage]
|
||||
class RewardRoute extends _i28.PageRouteInfo<void> {
|
||||
const RewardRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i25.RewardPage]
|
||||
class RewardRoute extends _i29.PageRouteInfo<void> {
|
||||
const RewardRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(RewardRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'RewardRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i24.RewardPage();
|
||||
return const _i25.RewardPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i25.SplashPage]
|
||||
class SplashRoute extends _i28.PageRouteInfo<void> {
|
||||
const SplashRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i26.SplashPage]
|
||||
class SplashRoute extends _i29.PageRouteInfo<void> {
|
||||
const SplashRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(SplashRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'SplashRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i25.SplashPage();
|
||||
return const _i26.SplashPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i26.VoucherDetailPage]
|
||||
class VoucherDetailRoute extends _i28.PageRouteInfo<void> {
|
||||
const VoucherDetailRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i27.VoucherDetailPage]
|
||||
class VoucherDetailRoute extends _i29.PageRouteInfo<void> {
|
||||
const VoucherDetailRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(VoucherDetailRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'VoucherDetailRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i26.VoucherDetailPage();
|
||||
return const _i27.VoucherDetailPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i27.VoucherPage]
|
||||
class VoucherRoute extends _i28.PageRouteInfo<void> {
|
||||
const VoucherRoute({List<_i28.PageRouteInfo>? children})
|
||||
/// [_i28.VoucherPage]
|
||||
class VoucherRoute extends _i29.PageRouteInfo<void> {
|
||||
const VoucherRoute({List<_i29.PageRouteInfo>? children})
|
||||
: super(VoucherRoute.name, initialChildren: children);
|
||||
|
||||
static const String name = 'VoucherRoute';
|
||||
|
||||
static _i28.PageInfo page = _i28.PageInfo(
|
||||
static _i29.PageInfo page = _i29.PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
return const _i27.VoucherPage();
|
||||
return const _i28.VoucherPage();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user