Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Auth state check in Flutter

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);
}
like image 635
Darkhan Avatar asked Apr 13 '18 07:04

Darkhan


2 Answers

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();
  }
}
like image 78
Shady Aziza Avatar answered Oct 12 '22 15:10

Shady Aziza


What about

FirebaseAuth.instance.onAuthStateChanged.listen((user) {
  setState(() => isAuthenticated = user != null);
}) 
like image 34
Günter Zöchbauer Avatar answered Oct 12 '22 16:10

Günter Zöchbauer