在Flutter中,如何使当前用户从Firebase维护的缓存中登录,以获取电子邮件和密码的登录类型

siv*_*mar 3 dart flutter

我可以通过身份验证与用户登录,但是如何获得当前用户的帮助。

我正在尝试这种方式

FirebaseUser user = FirebaseAuth.instance.currentUser;
print(user.uid);
Run Code Online (Sandbox Code Playgroud)

但显示为

无法将类型'()-> Future类型的值分配给firebaseuser类型的变量“

Moh*_*548 6

这是一个对我有用的解决方案。我也有同样的问题,但我设法通过这样做来克服。这是我的代码片段

String accountStatus = '******';
FirebaseUser mCurrentUser;
FirebaseAuth _auth;

@override
void initState() {
  super.initState();
  _auth = FirebaseAuth.instance;
  _getCurrentUser();
  print('here outside async');
}

_getCurrentUser () async {
  mCurrentUser = await _auth.currentUser();
  print('Hello ' + mCurrentUser.displayName.toString());
  setState(() {
    mCurrentUser != null ? accountStatus = 'Signed In' : 'Not Signed In';
  });
}
Run Code Online (Sandbox Code Playgroud)

在我的 StatefulWidget 类的构建方法中,我有一个带有“accountStatus”的文本小部件,显示用户是否登录。这个异步 _getCurrentUser 方法从 FirebaseAuth 获取用户并在屏幕上重新绘制帐户状态变量;一旦您使用电子邮件和密码登录,就可以通过异步方法轻松获取用户。希望这可以解决问题 请注意,即使互联网关闭,这也有效。在这种情况下,'mCurrentUser' 是从 Firebase 缓存中获取的。


Gün*_*uer 5

我尚不十分了解Flutter,但从您的错误消息中,我认为这应该可以修复错误

someMethod() async {
  FirebaseUser user = await FirebaseAuth.instance.currentUser();
  print(user.uid);    
Run Code Online (Sandbox Code Playgroud)