AuthProvide Class*
class AuthProvider extends ChangeNotifier {
final FirebaseAuth _auth = FirebaseAuth.instance;
bool get isSignedIn => _auth.currentUser != null;
User get currentUser => _auth.currentUser!;
String message = '';
Future<String> signIn(
{required String email, required String password}) async {
try {
await _auth.signInWithEmailAndPassword(email: email, password: password);
notifyListeners();
message = 'Successfully signed in';
return message;
} on FirebaseAuthException catch (e) {
message = getMessageFromErrorCode(e.code);
return message;
}
}
}
I call the isSignedIn getter in main using a consumer and return login screen or home screen based on the bool value.
SignIn Widget
SignInBar(
label: 'Sign in',
color: const Color(0xff092E34),
onPressed: () async {
FocusScope.of(context).unfocus();
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
String message = await context
.read<AuthProvider>()
.signIn(email: _email, password: _password);
SnackBar snackBar = SnackBar(content: Text(message));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
},
),
When SignIn onPressed is called my widget gets rebuilt and the form is cleared. how to stop it from rebuilding?