代码之家  ›  专栏  ›  技术社区  ›  stuckedunderflow

条件底部导航栏

  •  0
  • stuckedunderflow  · 技术社区  · 7 年前

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

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

    如何做到这一点?如何使用if条件来确定要加载的布局?错误说明缺少标识符expexted”)'

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   Hemanth Raj    7 年前

    通过 async 功能 onPressed 帐户图标。你的 异步的 函数应该是这样的。

    例子:

    //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();
    

    希望这有帮助!