在Flutter应用程序中,我的'/'
路由设置为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()
。
如果需要,我也愿意完成对应用程序结构的“重新设计”。
编辑:另外,我什至需要包装纸吗?我实现了它,以确保用户进入正确的屏幕,因为我不知道应用程序的状态是否有任何解决方法。我可以在没有所有包装废话的情况下只使用导航吗?