一尘不染

Flutter中的Firebase身份验证状态检查

flutter

目前,我需要检查用户是否已登录,然后采取相应的措施(打开主页或登录屏幕)。我仅使用电子邮件身份验证。

如何在Flutter中检查用户Firebase身份验证状态?

这里已经问过这个问题,但是我无法通过这种方式检查auth状态:

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

阅读 261

收藏
2020-08-13

共1个答案

一尘不染

您还可以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();
  }
}
2020-08-13