import 'package:flutter/material.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter_application_1/Project/utils/colors.dart'; class ForgetPassword extends StatefulWidget { @override _ForgetPasswordState createState() => _ForgetPasswordState(); } class _ForgetPasswordState extends State { final GlobalKey _formKey = GlobalKey(); late String _email; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: IconButton( icon: const Icon(Icons.arrow_back_ios), onPressed: () => Navigator.of(context).pop(), color: Colors.black, ), title: const Center( child: Text( 'Forget Password', style: TextStyle( color: kBackgroundColor, fontSize: 18, fontWeight: FontWeight.w700), ), ), backgroundColor: Colors.transparent, elevation: 0, actions: [ IconButton( onPressed: () {}, icon: const Icon(Icons.more_vert), ) ], ), body: Center( child: Form( key: _formKey, child: Padding( padding: const EdgeInsets.all(12.0), child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ const Text('Reset Password ?', style: TextStyle( fontSize: 60.0, fontWeight: FontWeight.bold, height: 1, )), const Text( 'Enter your email address to reset your password', style: TextStyle( fontSize: 16.0, height: 1.5, fontWeight: FontWeight.w400, color: Color(0xff868686), ), ), const SizedBox(height: 20.0), TextFormField( keyboardType: TextInputType.emailAddress, validator: (value) { if (value!.isEmpty) { return 'Please enter an email address'; } else if (!RegExp(r"^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$") .hasMatch(value)) { return 'Please enter a valid email address'; } return null; }, onSaved: (input) => _email = input!.trim(), decoration: InputDecoration( isDense: true, filled: true, fillColor: const Color.fromARGB(246, 246, 246, 246), contentPadding: const EdgeInsets.fromLTRB(14, 18, 14, 10), labelText: 'Email Address', labelStyle: const TextStyle(fontSize: 14), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(5), borderSide: const BorderSide( color: Color.fromARGB(232, 232, 232, 232), ), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(5), ), ), ), const SizedBox(height: 20.0), ElevatedButton( onPressed: () async { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); try { await FirebaseAuth.instance .sendPasswordResetEmail(email: _email); showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text( 'SUCCESS', style: TextStyle(color: Colors.red), ), content: const Text( 'Please check your email to reset your password', style: TextStyle(height: 15), ), actions: [ TextButton( child: const Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } on FirebaseAuthException catch (e) { if (e.code == 'user-not-found') { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('ERROR', style: TextStyle(color: Colors.red)), content: const Text( 'No user was found with the provided email address.'), actions: [ TextButton( child: const Text('OK'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } else { print('Error: ${e.message}'); } } catch (e) { print(e); } } }, child: const Text('Reset Password'), style: ElevatedButton.styleFrom( backgroundColor: kGreenColor, foregroundColor: kWhiteColor, padding: const EdgeInsets.all(13), minimumSize: const Size(350, 10), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), ), ), ], ), ), ), ), ); } }