login method
dynamic
login({
- required BuildContext context,
- required bool remember_me,
- required GlobalKey<
FormState> login_form_key, - required List<
TextEditingController> input_controllers, - required SharedPreferences prefs,
- required Persistence persistence,
Implementation
login({
required BuildContext context,
required bool remember_me,
required GlobalKey<FormState> login_form_key,
required List<TextEditingController> input_controllers,
required SharedPreferences prefs,
required Persistence persistence,
}) async {
TextEditingController email_input_controller = input_controllers[0];
TextEditingController password_input_controller = input_controllers[1];
if (login_form_key.currentState!.validate()) {
// Set persistence in Web.
if (UniversalPlatform.isWeb)
await FirebaseAuth.instance.setPersistence(persistence);
await FirebaseAuth.instance
.signInWithEmailAndPassword(
email: email_input_controller.text,
password: password_input_controller.text,
)
.then((UserCredential value) async {
User user = value.user!;
String uid = user.uid;
DocumentSnapshot snapshot_user =
await FirebaseFirestore.instance.collection("users").doc(uid).get();
if (value.user!.emailVerified) {
if (remember_me) prefs.setString("email", value.user!.email!);
open_screen("home");
email_input_controller.clear();
password_input_controller.clear();
} else {
show_email_verification_alert_dialog(
context: context,
user: value.user!,
);
}
return null;
}).catchError((error) {
print("Login error: " + error.toString());
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("The password or email are invalid"),
duration: Duration(milliseconds: 1500),
),
);
});
}
}