Diego jiménez
Diego jiménez

Reputation: 47

How to get data from the CurrentUser on flutter Firebase Authentification

I have this Firebase Authentication Providers with who I can create an user, Sign In and Sign Out with the methods (only with email and password) My problem I that in the UI I want to show data from the current User once the user has Sign In and I don't know how. For example showing the email in a TextWidget or get the email as a variable for other stuff.

final firebaseAuthProvider = Provider<FirebaseAuth>((ref) {
      return FirebaseAuth.instance;
    });
    
    class AuthenticationService {
      final FirebaseAuth _firebaseAuth;
      final Reader read;
      AuthenticationService(this._firebaseAuth, this.read);
      
      Stream<User?> get authStateChange => _firebaseAuth.authStateChanges();
        
      Future<String> signIn({required String email, required String constrasena, required String nombreUsuario}) async {
        try {
          await _firebaseAuth.signInWithEmailAndPassword(
            email: email,
            password: constrasena,
          );
          return "Login Successful";
        } on FirebaseAuthException catch (e) {
          return e.message ?? 'Error';
        }
      }
    
      Future<String> signUp({required String email, required String constrasena, required String nombreUsuario}) async {
        try {
          await _firebaseAuth.createUserWithEmailAndPassword(
            email: email,
            password: constrasena,
          );
          read(addPerson(Person(nombre_de_usuario: nombreUsuario, email: email, videosVistos: 0)));
          return "Signup Successful";
        } on FirebaseAuthException catch (e) {
          print(e.message);
          return e.message ?? 'Error';
        }
      }
    
      Future<void> signout() async {
        await _firebaseAuth.signOut();
      }
    }
    
    final authServicesProvider = Provider<AuthenticationService>((ref) {
      return AuthenticationService(ref.read(firebaseAuthProvider), ref.read);
    });
    
    final authStateProvider = StreamProvider<User?>((ref) {
      return ref.watch(authServicesProvider).authStateChange;
    });

Thanks You!

Upvotes: 1

Views: 467

Answers (1)

caiopo
caiopo

Reputation: 499

You can use FirebaseAuth.instance.currentUser.

Example:

Get the user on your initState.

_user = FirebaseAuth.instance.currentUser;

And on your build method:

Text(_user?.email ?? 'No email')

Upvotes: 1

Related Questions