如何在 flutter Firebase 身份验证中从 CurrentUser 获取数据

How to get data from the CurrentUser on flutter Firebase Authentification

我有这个 Firebase Authentication Providers,我可以用它创建用户,使用方法登录和注销(仅使用电子邮件和密码) 我的问题是,在 UI 中,我想在用户登录后显示当前用户的数据,但我不知道如何登录。 例如在 TextWidget 中显示电子邮件或将电子邮件作为其他内容的变量。

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;
    });

谢谢!

您可以使用 FirebaseAuth.instance.currentUser.

示例:

在您的 initState.

上获取用户
_user = FirebaseAuth.instance.currentUser;

在你的 build 方法上:

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