import 'package:flutter/material.dart'; class ForgotPasswordPage extends StatefulWidget { const ForgotPasswordPage({super.key}); @override State createState() => _ForgotPasswordPageState(); } class _ForgotPasswordPageState extends State { final _formKey = GlobalKey(); final TextEditingController _emailController = TextEditingController(); bool _isLoading = false; String? _validateEmail(String? value) { if (value == null || value.isEmpty) { return 'Please enter your email'; } if (!RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(value)) { return 'Please enter a valid email'; } return null; } Future _sendResetLink() async { if (_formKey.currentState!.validate()) { setState(() { _isLoading = true; }); // Simulate network delay await Future.delayed(const Duration(seconds: 1)); final email = _emailController.text; setState(() { _isLoading = false; }); if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('If an account exists for $email, a reset link has been mock-sent.'), duration: const Duration(seconds: 3), ), ); // Optionally navigate back after showing the message await Future.delayed(const Duration(seconds: 1)); // Give time to read snackbar if (mounted && Navigator.canPop(context)) { Navigator.pop(context); // Go back to the login page } } } } @override void dispose() { _emailController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final theme = Theme.of(context); return Scaffold( appBar: AppBar( title: const Text('Reset Password'), leading: IconButton( // Custom back button if you want, or let default work icon: const Icon(Icons.arrow_back), onPressed: () => Navigator.of(context).pop(), ), ), body: Center( child: SingleChildScrollView( padding: const EdgeInsets.all(25.0), child: Form( key: _formKey, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Icon( Icons.lock_reset_outlined, size: 80, color: theme.primaryColor, ), const SizedBox(height: 20), Text( 'Forgot Your Password?', textAlign: TextAlign.center, style: theme.textTheme.headlineSmall?.copyWith( color: theme.primaryColor, ), ), const SizedBox(height: 10), Text( 'Enter your email address below and we\'ll (mock) send you a link to reset your password.', textAlign: TextAlign.center, style: theme.textTheme.bodyLarge, ), const SizedBox(height: 40), TextFormField( controller: _emailController, decoration: const InputDecoration( hintText: 'Enter your Email Address', prefixIcon: Icon(Icons.email_outlined), ), keyboardType: TextInputType.emailAddress, validator: _validateEmail, autovalidateMode: AutovalidateMode.onUserInteraction, ), const SizedBox(height: 30), _isLoading ? const Center(child: CircularProgressIndicator()) : ElevatedButton( onPressed: _sendResetLink, child: const Text('Send Reset Link'), ), const SizedBox(height: 20), TextButton( onPressed: () { if (Navigator.canPop(context)) { Navigator.pop(context); // Go back to login } else { // Fallback if it can't pop (e.g., if opened directly) Navigator.pushReplacementNamed(context, '/'); } }, child: Text( 'Back to Login', style: TextStyle(color: theme.primaryColor), ), ) ], ), ), ), ), ); } }