Что не так с моим initState во Flutter?

#flutter #flutter-state

#flutter #состояние flutter

Вопрос:

Я пытаюсь выполнить автозапуск с помощью flutter и firebase и поместить его в initState, но, похоже, это не оправдано, потому что я пытался переместить его в Build Widget, но ничего не сработало, но когда я поместил его в LoginPageState, это было оправдано, но с ошибкой: операция Navigator запрошена в контексте, который не включает Navigator. Мой код :

 @override
  void initState() {
    super.initState();
    final user = FirebaseAuth.instance.currentUser();
    if (user == null) {
      print('User Null');
    } else {
      Navigator.pushReplacementNamed(context, '/HomePage');
    }
  }
  

Комментарии:

1. попробуйте создать функцию вне нее и поместить код внутрь, а затем вызвать ее внутри initstate

2. попробуйте создать функцию вне нее и поместить код внутрь, а затем вызвать ее внутри initstate

3. Можете ли вы попробовать поместить свой код внутрь? WidgetsBinding.instance.addPostFrameCallback((времЕнная метка) { inal user = FirebaseAuth.instance.CurrentUser(); if (user == null) { print(‘User Null’); } else { Navigator.pushReplacementNamed(контекст, ‘/ Домашняя страница’); } });

4. Выполнение этого внутри функции не сработало.

Ответ №1:

Вам нужно дождаться FirebaseAuth.instance.currentUser() завершения. Поэтому используйте await следующим образом.

 final user = await FirebaseAuth.instance.currentUser()
  

Комментарии:

1. Это сработало, за исключением добавления async в initState, потому что это возможно, поэтому я добавил async в функцию autologin () . Спасибо 🙂