抽屉里有两个菜单。我希望一个菜单只显示给其角色是管理员的用户。我已将角色保存在SharedPreferences
中。
代码:
class _DrawerMobileState extends State<DrawerMobile> {
bool isAdmin = false;
@override
void initState() {
getName();
}
@override
void initState() {
getName();
}
void getName() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
myList = prefs.getStringList("roles");
myList.forEach((w){
myList.forEach((w){
if(w == "ROLE_MODERATOR"){
isAdmin = true;
}else if(w == "ROLE_ADMIN"){
// print('not found');
isAdmin = true;
}else{
debugPrint(w);
}
});
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
_createHeader(),
_createDrawerItem(
icon: Icons.home,
text: 'Dashboard',
onTap: () => Navigator.pushReplacementNamed(context, '/home')),
_createDrawerItem(
icon: Icons.timer,
text: 'Admin Temperature n Check-in',
onTap: () =>
Navigator.pushReplacementNamed(context, '/temperatureadmin')),
],
),
);
}
Widget _createDrawerItem(
{IconData icon, String text, GestureTapCallback onTap}) {
return ListTile(
title: Row(
children: <Widget>[
Icon(icon),
Padding(
padding: EdgeInsets.only(left: 8.0),
child: Text(text),
)
],
),
onTap: onTap,
);
}
我如何在列表小部件内添加一个for each循环,以仅向管理员用户显示Admin Temperature n Check-in
菜单?
对于某些用户来说,让任何小部件消失的一个简单方法是将其包装在?:
ie
(isNotAdmin)? Container()
: _createDrawerItem(
icon: Icons.timer,
text: 'Admin Temperature n Check-in',
onTap: () =>
Navigator.pushReplacementNamed(context, '/temperatureadmin')),