Flutter:有条件的底部导航栏,用于根据if条件显示页面

时间:2019-12-24 08:07:34

标签: flutter conditional-statements flutter-layout

我已经用下面列出的逻辑实现了底部的导航栏,并且我想检查用户是否登录。如果用户在第三个选项卡上登录,我想显示配置文件页面而不是登录页面。这是我的代码,在其中显示底部导航栏,在checkIsLoggedIn()异步函数之后,我被困在该做什么。

strong text

之后,我将建立窗口小部件列表以在3个选项卡中显示页面。 代码在下面,

enter image description here

因此,我需要显示SignIn()的位置,如果用户登录,则以其他方式显示登录,它显示“个人资料”页面。 请在这里帮我。

3 个答案:

答案 0 :(得分:2)

这可能有帮助。

Future<void> checkIfLoggedIn() async {
  SharedPreferences localStorage = await SharedPreferences.getInstance();
  var id = localStorage.getString('id');
  if (id != null) {
    setState(() {
      _children[2] = ProfilePage();
    });
  }
}

答案 1 :(得分:0)


checkIfLoggedIn()内,与_isLoggedIn一起编写以下代码:
_children[2] = Profile()

答案 2 :(得分:0)

您可以按如下所示设置最后一个BottomNavigationItem

BottomNavigationItem(
    icon:_isLoggedIn ? Icons.person : Icons.key,
    title:Text(_isLoggedIn ? 'Account' : 'Log in' )
)

您可以处理点击事件,并由相同的三元运算符使用build()变量在_isLoggedIn中设置适当的页面

build(){
    return Scaffold(
        body:_isLoggedIn?ProfilePage():LoginPage()
    );
}