Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 基于用户登录/注销的颤振登录/注销按钮可见性_Flutter - Fatal编程技术网

Flutter 基于用户登录/注销的颤振登录/注销按钮可见性

Flutter 基于用户登录/注销的颤振登录/注销按钮可见性,flutter,Flutter,我已经实现了登录和注销按钮,但不知道如何显示/隐藏按钮(列表视图中的列表)。按钮位于Listview(抽屉内)中,希望在顶部登录时显示按钮,若用户已登录,则希望在Listview末尾显示注销 用于验证登录是否存储在共享首选项中的用户ID SharedPreferences prefs = await SharedPreferences.getInstance(); dynamic userid = prefs.getInt('userId'); 填充( 填充:仅限边缘设置(顶部:10

我已经实现了登录和注销按钮,但不知道如何显示/隐藏按钮(列表视图中的列表)。按钮位于Listview(抽屉内)中,希望在顶部登录时显示按钮,若用户已登录,则希望在Listview末尾显示注销

用于验证登录是否存储在共享首选项中的用户ID

 SharedPreferences prefs = await SharedPreferences.getInstance();
    dynamic userid = prefs.getInt('userId');
填充(
填充:仅限边缘设置(顶部:10,底部:10),
孩子:InkWell(
onTap:(){
push(context,materialpage(builder:(context)=>LoginandSignupScreen());
},
孩子:排(
儿童:[
扩展(flex:2,child:Icon(Icons.card_travel)),
扩大(
弹性:10,
子:文本(
“登录”,
样式:TextStyle(字体大小:15),
))
],
),
),
),
填充物(
填充:仅限边缘设置(顶部:10,底部:10),
孩子:InkWell(
onTap:(){
Provider.of(context,listen:false).logout();
Navigator.push(上下文,MaterialPackageRoute(builder:(context)=>HomeScreen());},
孩子:排(
儿童:[
扩展(flex:2,child:Icon(Icons.card_travel)),
扩大(
弹性:10,
子:文本(
“注销”,
样式:TextStyle(字体大小:15),
))
],
),
),
),

您必须维护bool以了解用户是否登录。在您的情况下,您可以使用三元运算符来验证这一点,类似于此,您可以申请登录

userid != null ? Padding(
          padding: EdgeInsets.only(top: 10, bottom: 10),
          child: InkWell(
            onTap: (){
              Provider.of<Auth>(context, listen: false).logout();

              Navigator.push(context, MaterialPageRoute(builder: (context)=> HomeScreen()));},
            child: Row(
              children: <Widget>[
                Expanded(flex: 2, child: Icon(Icons.card_travel)),
                Expanded(
                    flex: 10,
                    child: Text(
                      'Logout',
                      style: TextStyle(fontSize: 15),
                    ))
              ],
            ),
          ),
        ) : Container();
userid!=无效的填充物(
填充:仅限边缘设置(顶部:10,底部:10),
孩子:InkWell(
onTap:(){
Provider.of(context,listen:false).logout();
Navigator.push(上下文,MaterialPackageRoute(builder:(context)=>HomeScreen());},
孩子:排(
儿童:[
扩展(flex:2,child:Icon(Icons.card_travel)),
扩大(
弹性:10,
子:文本(
“注销”,
样式:TextStyle(字体大小:15),
))
],
),
),
):容器();

您必须维护bool以了解用户是否登录。在您的情况下,您可以使用三元运算符来验证这一点,类似于此,您可以申请登录

userid != null ? Padding(
          padding: EdgeInsets.only(top: 10, bottom: 10),
          child: InkWell(
            onTap: (){
              Provider.of<Auth>(context, listen: false).logout();

              Navigator.push(context, MaterialPageRoute(builder: (context)=> HomeScreen()));},
            child: Row(
              children: <Widget>[
                Expanded(flex: 2, child: Icon(Icons.card_travel)),
                Expanded(
                    flex: 10,
                    child: Text(
                      'Logout',
                      style: TextStyle(fontSize: 15),
                    ))
              ],
            ),
          ),
        ) : Container();
userid!=无效的填充物(
填充:仅限边缘设置(顶部:10,底部:10),
孩子:InkWell(
onTap:(){
Provider.of(context,listen:false).logout();
Navigator.push(上下文,MaterialPackageRoute(builder:(context)=>HomeScreen());},
孩子:排(
儿童:[
扩展(flex:2,child:Icon(Icons.card_travel)),
扩大(
弹性:10,
子:文本(
“注销”,
样式:TextStyle(字体大小:15),
))
],
),
),
):容器();

请参见车坛,我有一个非常简单的方法向您展示如何实现这一点

  • 假设
    userid
    不存在,则它将
    null
    返回到
    userid
    变量
  • 现在,在
    flatter
    中,您可以执行
    检查
    ,并在此基础上显示/隐藏某些内容

    var somthing = data
    
    if(something != null) // show your Widget
    else Container() // this is usually done to show the empty widget, which is as good as hiding the data and showing up a non-space taking widget
    
    现在,在您当前的情况下,您可以根据上述方法显示/隐藏按钮。我们使用一个称为三元运算符的条件运算符。你可以阅读更多关于它的内容

    //如果用户未登录,则不会显示登录,这意味着userid应为null
    userid==null?
    填充物(
    填充:仅限边缘设置(顶部:10,底部:10),
    孩子:InkWell(
    onTap:(){
    push(context,materialpage(builder:(context)=>LoginandSignupScreen());
    },
    孩子:排(
    儿童:[
    扩展(flex:2,child:Icon(Icons.card_travel)),
    扩大(
    弹性:10,
    子项:文本('Login',样式:TextStyle(fontSize:15)))
    ]
    )
    )
    ):Container(),//如果userid不为null,则将显示Container(),
    //若用户已登录,则不会显示注销,这意味着userid不应为null
    用户ID!=无效的
    填充物(
    填充:仅限边缘设置(顶部:10,底部:10),
    孩子:InkWell(
    onTap:(){
    Provider.of(context,listen:false).logout();
    Navigator.push(上下文,MaterialPackageRoute(builder:(context)=>HomeScreen());},
    孩子:排(
    儿童:[
    扩展(flex:2,child:Icon(Icons.card_travel)),
    扩大(
    弹性:10,
    子项:文本('Logout',样式:TextStyle(fontSize:15)))
    ]
    )
    )
    ):Container()//如果userid为null,则将显示Container()
    

    你就是这样处理的。我希望这对你有帮助。如果您需要任何澄清,请告诉我。在那之前,快乐学习:)

    车坛,我有一个非常简单的方法向你展示如何实现这一目标

  • 假设
    userid
    不存在,则它将
    null
    返回到
    userid
    变量
  • 现在,在
    flatter
    中,您可以执行
    检查
    ,并在此基础上显示/隐藏某些内容

    var somthing = data
    
    if(something != null) // show your Widget
    else Container() // this is usually done to show the empty widget, which is as good as hiding the data and showing up a non-space taking widget
    
    现在,在您当前的情况下,您可以根据上述方法显示/隐藏按钮。我们使用一个称为三元运算符的条件运算符。你可以阅读更多关于它的内容

    //如果用户未登录,则登录w