如何在 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')
我有这个 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')