有条件的底部导航栏

时间:2018-12-10 03:08:18

标签: flutter

我有一个由5个图标组成的底部导航栏,它将相应地重定向到5个屏幕。

第五个图标是“帐户”屏幕,因此,在没有会话时,它必须重定向到“登录”屏幕,然后加载“帐户”屏幕。但是登录后,当用户点击“帐户”图标时,只会重定向到“帐户”屏幕。

如何实现?如何使用if条件确定要加载的布局?错误提示缺少的标识符扩展为')'

enter image description here

1 个答案:

答案 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();

希望这会有所帮助!