Currently I need to set up a check whether a user is logged in or not to then act accordingly (open home or log in screen). I'm using only email authentication.
How to check user firebase auth state in flutter?
This question has already been asked here, but I failed to check auth state in this way:
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);
}
You can also check your auth status inside initState
like so:
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();
}
}
What about
FirebaseAuth.instance.onAuthStateChanged.listen((user) {
setState(() => isAuthenticated = user != null);
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With