Flutter中的Firebase身份验证状态检查
问题内容:
目前,我需要检查用户是否已登录,然后采取相应的措施(打开主页或登录屏幕)。我仅使用电子邮件身份验证。
如何在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);
}
问题答案:
您还可以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();
}
}