register method
dynamic
register({
- required BuildContext context,
- required bool accept_terms,
- required GlobalKey<
FormState> register_form_key, - required List<
TextEditingController> input_controllers, - required DateTime selected_date,
- required int gender_value,
- required String country_value,
- required String birthday_label,
Implementation
register({
required BuildContext context,
required bool accept_terms,
required GlobalKey<FormState> register_form_key,
required List<TextEditingController> input_controllers,
required DateTime selected_date,
required int gender_value,
required String country_value,
required String birthday_label,
}) {
TextEditingController firstname_input_controller = input_controllers[0];
TextEditingController lastname_input_controller = input_controllers[1];
TextEditingController email_input_controller = input_controllers[2];
TextEditingController confirm_email_input_controller = input_controllers[3];
TextEditingController password_input_controller = input_controllers[4];
TextEditingController confirm_password_input_controller =
input_controllers[5];
if (accept_terms) {
if (birthday_label != "") {
if (register_form_key.currentState!.validate()) {
if (email_input_controller.text ==
confirm_email_input_controller.text) {
if (password_input_controller.text ==
confirm_password_input_controller.text) {
FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: email_input_controller.text,
password: password_input_controller.text,
)
.then((current_user) async {
FirebaseAuth.instance.signInWithEmailAndPassword(
email: email_input_controller.text,
password: password_input_controller.text,
);
Timestamp birthday_timestamp =
Timestamp.fromDate(selected_date);
FirebaseFirestore.instance
.collection("users")
.doc(current_user.user!.uid)
.set({
"firstname": firstname_input_controller.text,
"lastname": lastname_input_controller.text,
"birthday": birthday_timestamp,
"gender": gender_value,
"country": country_value,
}).then((result) {
firstname_input_controller.clear();
lastname_input_controller.clear();
email_input_controller.clear();
confirm_email_input_controller.clear();
password_input_controller.clear();
confirm_password_input_controller.clear();
open_screen("login");
}).catchError((err) {
print(err);
});
try {
await current_user.user!.sendEmailVerification();
return current_user.user!.uid;
} catch (e) {
print(
"An error occured while trying to send email verification");
print(e);
}
return current_user;
}).onError((error, stackTrace) {
if (error.toString().contains("email") &&
error.toString().contains("already") &&
error.toString().contains("use")) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("The email address is already registered."),
duration: Duration(seconds: 2),
),
);
}
return error.toString();
});
} else {
show_custom_dialog(
context: context,
title: "Failed",
message: "The passwords do not match",
button_text: "Close",
);
}
} else {
show_custom_dialog(
context: context,
title: "Failed",
message: "The emails do not match",
button_text: "Close",
);
}
}
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Enter your date of birth"),
duration: Duration(seconds: 3),
),
);
}
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("You need to accept the terms of use & privacy policy"),
duration: Duration(seconds: 3),
),
);
}
}