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