使菜单只在Listview小部件内显示给管理员用户



抽屉里有两个菜单。我希望一个菜单只显示给其角色是管理员的用户。我已将角色保存在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')),

最新更新