Your changes

This commit is contained in:
divya abdar
2025-12-11 18:36:11 +05:30
parent 3bf27cc29d
commit 9faf983b95
36 changed files with 4677 additions and 1046 deletions

View File

@@ -1,37 +1,198 @@
import 'dart:math';
import 'package:flutter/material.dart';
class WaitingScreen extends StatelessWidget {
class WaitingScreen extends StatefulWidget {
const WaitingScreen({super.key});
@override
State<WaitingScreen> createState() => _WaitingScreenState();
}
class _WaitingScreenState extends State<WaitingScreen>
with SingleTickerProviderStateMixin {
late final AnimationController _ctrl;
late final Animation<double> _anim;
@override
void initState() {
super.initState();
_ctrl = AnimationController(
vsync: this, duration: const Duration(milliseconds: 1200));
_anim = Tween<double>(begin: 0.0, end: pi).animate(
CurvedAnimation(parent: _ctrl, curve: Curves.easeInOut));
_ctrl.repeat();
}
@override
void dispose() {
_ctrl.dispose();
super.dispose();
}
Matrix4 _buildTransform(double value) {
return Matrix4.identity()
..setEntry(3, 2, 0.001)
..rotateX(value);
}
@override
Widget build(BuildContext context) {
final width = MediaQuery.of(context).size.width;
/// ⭐ Universal scaling factor for responsiveness
final scale = (width / 390).clamp(0.85, 1.3);
return Scaffold(
appBar: AppBar(title: const Text("Request Submitted")),
body: Padding(
padding: const EdgeInsets.all(18.0),
child: Center(
child: Column(mainAxisSize: MainAxisSize.min, children: [
Icon(Icons.hourglass_top, size: 72, color: Theme.of(context).primaryColor),
const SizedBox(height: 16),
const Text(
"Signup request submitted successfully.",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
body: SafeArea(
child: Stack(
children: [
/// BACK BUTTON
Positioned(
top: 12 * scale,
left: 12 * scale,
child: GestureDetector(
onTap: () => Navigator.pop(context),
child: Container(
height: 42 * scale,
width: 42 * scale,
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(
colors: [
Color(0xFF0D47A1),
Color(0xFF6A1B9A),
],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
),
child: Icon(Icons.arrow_back,
color: Colors.white, size: 20 * scale),
),
),
),
const SizedBox(height: 8),
const Text(
"Please wait up to 24 hours for admin approval. You will receive an email once approved.",
textAlign: TextAlign.center,
/// MAIN WHITE BOX
Center(
child: Container(
width: width * 0.90,
padding: EdgeInsets.symmetric(
horizontal: 20 * scale, vertical: 30 * scale),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16 * scale),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.10),
blurRadius: 14 * scale,
offset: Offset(0, 4 * scale),
),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
/// FLIPPING ICON
SizedBox(
height: 92 * scale,
child: AnimatedBuilder(
animation: _anim,
builder: (context, child) {
final angle = _anim.value;
final isBack = angle > (pi / 2);
return Transform(
transform: _buildTransform(angle),
alignment: Alignment.center,
child: Transform(
transform: isBack
? Matrix4.rotationY(pi)
: Matrix4.identity(),
alignment: Alignment.center,
child: child,
),
);
},
child: Icon(
Icons.hourglass_top,
size: 72 * scale,
color: Colors.indigo,
),
),
),
SizedBox(height: 16 * scale),
Text(
"Request Submitted",
style: TextStyle(
fontSize: 22 * scale,
fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
SizedBox(height: 10 * scale),
Text(
"Signup request submitted successfully.",
style: TextStyle(
fontSize: 18 * scale,
fontWeight: FontWeight.w500),
textAlign: TextAlign.center,
),
SizedBox(height: 8 * scale),
Text(
"Please wait up to 24 hours for admin approval. You will receive an email once approved.",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 14 * scale),
),
SizedBox(height: 24 * scale),
/// BUTTON WITH GRADIENT WRAPPER
Container(
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [
Color(0xFF0D47A1),
Color(0xFF6A1B9A),
],
),
borderRadius: BorderRadius.circular(12 * scale),
),
child: ElevatedButton(
onPressed: () {
Navigator.of(context)
.popUntil((route) => route.isFirst);
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.transparent,
shadowColor: Colors.transparent,
foregroundColor: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: 20 * scale,
vertical: 14 * scale),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(12 * scale),
),
),
child: Text(
"Back to Home",
style: TextStyle(fontSize: 16 * scale),
),
),
),
],
),
),
),
const SizedBox(height: 24),
ElevatedButton(
onPressed: () {
Navigator.of(context).popUntil((route) => route.isFirst);
},
child: const Padding(padding: EdgeInsets.symmetric(horizontal: 14, vertical: 12), child: Text("Back to Home")),
style: ElevatedButton.styleFrom(shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12))),
),
]),
],
),
),
);