From e32a78a853297fae6ac4abbeeb07fc19be085a3b Mon Sep 17 00:00:00 2001 From: Sanskar Modi Date: Sat, 16 Oct 2021 01:39:55 +0530 Subject: [PATCH 1/3] Added Forget password functionality --- lib/screens/auth/forgot_password.dart | 66 ++++++++++++++++++++------- lib/services/auth.dart | 4 +- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/lib/screens/auth/forgot_password.dart b/lib/screens/auth/forgot_password.dart index e4ac16b..f259c1b 100644 --- a/lib/screens/auth/forgot_password.dart +++ b/lib/screens/auth/forgot_password.dart @@ -1,5 +1,6 @@ import 'package:books_app/constants/colors.dart'; import 'package:books_app/constants/routes.dart'; +import 'package:books_app/services/auth.dart'; import 'package:books_app/widgets/auth/auth_navigation.dart'; import 'package:books_app/widgets/auth/auth_page_title.dart'; import 'package:books_app/widgets/button.dart'; @@ -16,6 +17,7 @@ class _ForgotPasswordScreenState extends State { TextEditingController _emailController = TextEditingController(); // final BackendService authService = BackendService(); + String _message; @override Widget build(BuildContext context) { return Scaffold( @@ -25,6 +27,7 @@ class _ForgotPasswordScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + _message != null ? showAlert() : Container(), const AuthPageTitle(name: 'Reset password'), // AuthErrorMessage(errorMessage: error.toString()), Form( @@ -38,29 +41,60 @@ class _ForgotPasswordScreenState extends State { Button( name: 'Continue', color: blackButton, - myFunction: () { + myFunction: () async { + await FirebaseAuthService() + .ResetPassword(_emailController.text); + setState(() { + _message = + "Password reset link has been sent to you on email ${_emailController.text}.You will be redirected to signIn page"; + }); + + print(_message); + await Future.delayed(Duration(seconds: 4), () {}); Navigator.pushReplacementNamed(context, Routes.INITIAL_PAGE); }, ) - // AuthButton( - // text: 'Continue', - // formKey: formKey, - // onClick: onSubmit, - // onSuccess: onSuccess, - // onError: onError, - // ) ], ), ), ); } - // Future onSubmit() async { - // return authService.forgotPassword(email).toString(); - // } - - // void onSuccess() { - // Navigator.of(context).push(MaterialPageRoute( - // builder: (BuildContext context) => ResetPasswordScreen(email: email))); - // } + Widget showAlert() { + if (_message != null) { + return Align( + alignment: Alignment.topCenter, + child: Container( + color: Colors.amberAccent, + width: double.infinity, + padding: EdgeInsets.all(8.0), + child: Row( + children: [ + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Icon(Icons.error_outline), + ), + Expanded( + child: Text( + _message, + maxLines: 3, + ), + ), + Padding( + padding: const EdgeInsets.only(left: 8.0), + child: IconButton( + icon: Icon(Icons.close), + onPressed: () { + setState(() { + _message = null; + }); + }, + ), + ) + ], + ), + ), + ); + } + } } diff --git a/lib/services/auth.dart b/lib/services/auth.dart index 4088278..1985523 100644 --- a/lib/services/auth.dart +++ b/lib/services/auth.dart @@ -161,7 +161,9 @@ class FirebaseAuthService extends ChangeNotifier { } } } - + FutureResetPassword(String email) async { + await firebaseAuth.sendPasswordResetEmail(email: email); + } // sign out from app Future signOut() async { await firebaseAuth.signOut(); From fb752f039a047b8296830f64bb1316e1857e909d Mon Sep 17 00:00:00 2001 From: Sanskar Modi Date: Sat, 16 Oct 2021 02:00:42 +0530 Subject: [PATCH 2/3] Linting Changes --- lib/screens/auth/forgot_password.dart | 16 +++++++++------- lib/screens/auth/register.dart | 3 --- lib/screens/book_desciption.dart | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/screens/auth/forgot_password.dart b/lib/screens/auth/forgot_password.dart index f259c1b..cfa8e3c 100644 --- a/lib/screens/auth/forgot_password.dart +++ b/lib/screens/auth/forgot_password.dart @@ -27,7 +27,7 @@ class _ForgotPasswordScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - _message != null ? showAlert() : Container(), + showAlert() , const AuthPageTitle(name: 'Reset password'), // AuthErrorMessage(errorMessage: error.toString()), Form( @@ -46,11 +46,11 @@ class _ForgotPasswordScreenState extends State { .ResetPassword(_emailController.text); setState(() { _message = - "Password reset link has been sent to you on email ${_emailController.text}.You will be redirected to signIn page"; + 'Password reset link has been sent to you on email ${_emailController.text}.You will be redirected to signIn page'; }); print(_message); - await Future.delayed(Duration(seconds: 4), () {}); + await Future.delayed(const Duration(seconds: 4), () {}); Navigator.pushReplacementNamed(context, Routes.INITIAL_PAGE); }, ) @@ -67,11 +67,11 @@ class _ForgotPasswordScreenState extends State { child: Container( color: Colors.amberAccent, width: double.infinity, - padding: EdgeInsets.all(8.0), + padding: const EdgeInsets.all(8.0), child: Row( children: [ - Padding( - padding: const EdgeInsets.only(right: 8.0), + const Padding( + padding: EdgeInsets.only(right: 8.0), child: Icon(Icons.error_outline), ), Expanded( @@ -83,7 +83,7 @@ class _ForgotPasswordScreenState extends State { Padding( padding: const EdgeInsets.only(left: 8.0), child: IconButton( - icon: Icon(Icons.close), + icon: const Icon(Icons.close), onPressed: () { setState(() { _message = null; @@ -96,5 +96,7 @@ class _ForgotPasswordScreenState extends State { ), ); } + else + return Container(); } } diff --git a/lib/screens/auth/register.dart b/lib/screens/auth/register.dart index 747b878..932cc63 100644 --- a/lib/screens/auth/register.dart +++ b/lib/screens/auth/register.dart @@ -1,12 +1,9 @@ import 'package:books_app/constants/colors.dart'; -import 'package:books_app/constants/routes.dart'; import 'package:books_app/services/auth.dart'; -import 'package:books_app/widgets/auth/auth_error_message.dart'; import 'package:books_app/widgets/auth/auth_navigation.dart'; import 'package:books_app/widgets/auth/auth_page_title.dart'; import 'package:books_app/widgets/button.dart'; import 'package:books_app/widgets/text_field.dart'; -import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; class RegisterScreen extends StatefulWidget { diff --git a/lib/screens/book_desciption.dart b/lib/screens/book_desciption.dart index a0eec3c..775dd8d 100644 --- a/lib/screens/book_desciption.dart +++ b/lib/screens/book_desciption.dart @@ -1,4 +1,4 @@ -import 'package:books_app/constants/colors.dart'; + import 'package:books_app/constants/routes.dart'; import 'package:books_app/providers/book.dart'; import 'package:books_app/services/auth.dart'; From bbb84969f1267318a69b22e5e42c6759471f75f1 Mon Sep 17 00:00:00 2001 From: Mohit_007 Date: Tue, 19 Oct 2021 11:01:45 +0530 Subject: [PATCH 3/3] null safety added --- lib/screens/auth/forgot_password.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/screens/auth/forgot_password.dart b/lib/screens/auth/forgot_password.dart index cfa8e3c..949b0cf 100644 --- a/lib/screens/auth/forgot_password.dart +++ b/lib/screens/auth/forgot_password.dart @@ -17,7 +17,7 @@ class _ForgotPasswordScreenState extends State { TextEditingController _emailController = TextEditingController(); // final BackendService authService = BackendService(); - String _message; + String? _message; @override Widget build(BuildContext context) { return Scaffold( @@ -76,7 +76,7 @@ class _ForgotPasswordScreenState extends State { ), Expanded( child: Text( - _message, + _message!, maxLines: 3, ), ), @@ -86,7 +86,7 @@ class _ForgotPasswordScreenState extends State { icon: const Icon(Icons.close), onPressed: () { setState(() { - _message = null; + _message = ''; }); }, ),