В моем приложении Flutter мой маршрут '/'
установлен в Wrapper (),
В этом Wrapper у меня есть следующее:
FirebaseUser user = context.watch<FirebaseUser>();
if (user == null) {
return Authentication();
} else {
return Home();
}
Проблема, с которой я столкнулся с этим код состоит в том, что если я обновляю стек навигации, например, Navigator.pushNamed(context, "/login")
, оператор return сверху не обновляет экран.
Например, после страницы Authentication()
я перенаправляю либо на страницу входа, либо на страницу регистрации с помощью навигатора Flutter. И если состояние FirebaseUser
изменится с одной из этих страниц, я не буду перенаправлен на Home()
с моего Wrapper()
. Мне нужно обновить экран вручную (нажмите снова на Android Emulator), и только тогда я буду перенаправлен на Home()
.
Я также открыт для завершения «редизайна» структуры моего приложения, если это необходимо.
РЕДАКТИРОВАТЬ: Кроме того, нужна ли мне оболочка? Я реализовал это, чтобы убедиться, что пользователь попадает на нужный экран, так как я не знал, есть ли какие-либо обходные пути с состоянием приложения. Могу ли я обойтись простым использованием навигации без всякой ерунды Wrapper?