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<ForgetPassword> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
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: <Widget>[
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: <Widget>[
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: <Widget>[
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),
),
),
),
],
),
),
),
),
);
}
}