我有一个由5个图标组成的底部导航栏,它将相应地重定向到5个屏幕。
第五个图标是“帐户”屏幕,因此,在没有会话时,它必须重定向到“登录”屏幕,然后加载“帐户”屏幕。但是登录后,当用户点击“帐户”图标时,只会重定向到“帐户”屏幕。
如何实现?如何使用if条件确定要加载的布局?错误提示缺少的标识符扩展为')'
答案 0 :(得分:0)
您可以通过为async
的“帐户”图标传递onPressed
函数来轻松实现此目的。您的async
函数看起来像这样。
示例:
//On Home Page, for account icon pressed
Future<void> checkCredsAndNavigate(){
bool loggedIn = _checkIfLoggedIn(); // this might be a function that gets status of user login, you can fetch from prefs, state, etc.
if(!loggedIn){
var data = await Navigator.of(context).pushNamed('YOUR_LOGIN_ROUTE_NAME');
if(data == null){ // Check for data, will be null when user cancels login
return;
}
}
Navigator.of(context).pushNamed('YOUR_ACCOUNT_ROUTE_NAME');
}
//On Login page,
// On successful login call
Navigator.of(context).pop(data); // this data can be anything like user id, or just a boolean indicating successful login,etc.
//To cancel login, call
Navigator.of(context).pop();
希望这会有所帮助!