#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 () . Спасибо 🙂