Войти Firebase / Flutter - PullRequest
       1

Войти Firebase / Flutter

1 голос
/ 24 апреля 2020

Я создал виджет, чтобы выбрать, какую страницу отображать LoginScreen() или HomeScreen() с именем Wrapper(), вот код:

class _WrapperState extends State<Wrapper> {

  @override
  void initState() {
    super.initState();
    var auth = FirebaseAuth.instance;
    auth.onAuthStateChanged.listen((user) {
      if (user != null) {
        print("user is logged in");
        Navigator.of(context).pushReplacementNamed(HomeScreen.routeName);
      } else {
        print("user is not logged in");
         Navigator.of(context).pushReplacementNamed(LoginScreen.routeName);
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}

ошибка, возникающая при работе signOut() функция:

Error:  The method 'findAncestorStateOfType' was called on nullWrapper widget returned null

1 Ответ

1 голос
/ 24 апреля 2020

Вам не нужно делать все это, аутентификация firebase может обрабатывать вход в систему и держать пользователя вошедшим в систему. Внутри первого метода жизненного цикла initState вы можете сделать следующее:

  @override
  void initState() {
    super.initState();
    var auth = FirebaseAuth.instance;
    auth.onAuthStateChanged.listen((user) {
      if (user != null) {
        print("user is logged in");
        //navigate to home page using Navigator Widget
      } else {
        print("user is not logged in");
         //navigate to sign in page using Navigator Widget
      }
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...