首页 文章

条件底部导航栏

提问于
浏览
0

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

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

怎么做到这一点?如何使用if条件来确定要加载哪个布局?错误表示缺少标识符已被驱逐')'

1 回答

  • 0

    您可以通过为 onPressed 帐户图标传递 async 函数轻松实现此目的 . 你的 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();
    

    希望这可以帮助!

相关问题