首页 > 解决方案 > 如何在应用启动时自动登录 Firebase 用户?

问题描述

我正在尝试实现一个 Home 类,该类显示新用户的登录屏幕或以前登录用户的自动登录,并将它们直接带到应用程序。但是,当代码运行时,它会显示已登录用户的登录屏幕。

据我了解,Future 函数最初返回 null 并且代码以显示“登录页面”结束,即使 Future 稍后返回当前用户。

class Home extends StatelessWidget {

FirebaseAuth _auth = FirebaseAuth.instance;

Future<FirebaseUser> getCurrentUser() async {
    return _auth.currentUser();
}

Widget userLoggedIn() {
  getCurrentUser().then((user) {
    if (user != null) {
      //User is auto-logged in = build main app
      return new Scaffold(
        body: Center(
          child: Text("Main App"),
        ),
      );
    } else if (user == null) {
      //New user = return null
      return null;
  });
}

@override
Widget build(BuildContext context) {
  return userLoggedIn() ??
      //New user = build login page
      new Scaffold(
        body: Center(
          child: Text("Login Page"),
        ),
      );
}

}

你能帮我解决这个问题吗?

标签: firebaseflutterfirebase-authentication

解决方案


您需要等到_auth.currentUser()返回用户。

使用await关键字而不是.then().

改变你的getCurrentUser()方法。

返回 aFirebaseUser而不是 a Future

FirebaseUser currentUser = await authService.getCurrentUser();


推荐阅读