registerByEmail method

Future<UserCredential> registerByEmail({
  1. required String email,
  2. required String userName,
  3. required String phoneNumber,
  4. required String password,
})

Implementation

Future<UserCredential> registerByEmail({
  required String email,
  required String userName,
  required String phoneNumber,
  required String password,
}) async {
  try {
    final response = await firebaseAuth.createUserWithEmailAndPassword(
      email: email,
      password: password,
    );
    await analytics.logSignUp(signUpMethod: 'email');

    firebaseFirestore.collection('users').doc(response.user!.uid).set({
      'email': email,
      'userName': userName,
      'phoneNumber': phoneNumber,
    });
    firebaseAuth.currentUser!.updateDisplayName(userName);
    firebaseAuth.currentUser!.verifyBeforeUpdateEmail(email);
    // firebaseAuth.currentUser!.updatePhoneNumber(phon);
    return response;
  } on FirebaseAuthException catch (e) {
    crashlytics.recordError(
      e,
      StackTrace.current,
      reason: 'Auth/registerByEmail',
    );

    throw FirebaseFailure(e.message!);
  } catch (e) {
    crashlytics.recordError(
      e,
      StackTrace.current,
      reason: 'Auth/registerByEmail',
    );

    throw FirebaseFailure(e.toString());
  }
}