Firebase Auth状态检查Flutter

Dar*_*han 6 dart firebase firebase-authentication flutter

目前,我需要设置检查用户是否登录,然后相应地采取行动(打开主页或登录屏幕).我只使用电子邮件身份验证.

如何在flutter中检查用户firebase身份验证状态?

这里已经提出这个问题,但我没有以这种方式检查身份验证状态:

final auth = FirebaseAuth.instance;

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        title: 'MyApp',
        home: (_checkLogin() == true ? new PostAuthScaffold() : new PreAuthScaffold())
    );
  }
}

bool _checkLogin() {
  return !(auth.currentUser == null);
}
Run Code Online (Sandbox Code Playgroud)

azi*_*iza 6

您还可以initState像下面这样检查您的身份验证状态:

class CheckAuth extends StatefulWidget {
  @override
  _CheckAuthState createState() => new _CheckAuthState();
}

class _CheckAuthState extends State<CheckAuth> {
  bool isLoggedIn;
  @override
  void initState() {
    isLoggedIn = false;
    FirebaseAuth.instance.currentUser().then((user) => user != null
        ? setState(() {
            isLoggedIn = true;
          })
        : null);
    super.initState();
    // new Future.delayed(const Duration(seconds: 2));
  }

  @override
  Widget build(BuildContext context) {
    return isLoggedIn ? new Home() : new LoginScreen();
  }
}
Run Code Online (Sandbox Code Playgroud)


Gün*_*uer 5

关于什么

FirebaseAuth.instance.onAuthStateChanged.listen((user) {
  setState(() => isAuthenticated = user != null);
}) 
Run Code Online (Sandbox Code Playgroud)