Flutter 颤振菜单导航器循环
我有一组菜单列表要打开,然后导航到相应的页面,但是我发现我的解决方案效率不高,因为菜单列表会不断添加新的菜单。我试图在开关盒内建立一个for循环Flutter 颤振菜单导航器循环,flutter,dart,Flutter,Dart,我有一组菜单列表要打开,然后导航到相应的页面,但是我发现我的解决方案效率不高,因为菜单列表会不断添加新的菜单。我试图在开关盒内建立一个for循环 class MenuData { MenuData(this.icon, this.title, this.route); final IconData icon; final String title; final String route; } List<MenuData> menuList = [ MenuData
class MenuData {
MenuData(this.icon, this.title, this.route);
final IconData icon;
final String title;
final String route;
}
List<MenuData> menuList = [
MenuData(Icons.move_to_inbox_outlined, 'Menu A',AppConstant.MenuRouteA),
MenuData(Icons.move_to_inbox_outlined, 'Menu B',AppConstant.MenuRouteB),
MenuData(Icons.move_to_inbox_outlined, 'Menu C',AppConstant.MenuRouteC),
MenuData(Icons.move_to_inbox_outlined, 'Menu D',AppConstant.MenuRouteD),
];
void _menuNavigate(int index) {
switch (index) {
case 1:
Navigator.pushNamed(context, AppConstant.MenuRouteA);
break;
case 2:
Navigator.pushNamed(context, AppConstant.MenuRouteB);
break;
case 3:
Navigator.pushNamed(context, AppConstant.MenuRouteC);
break;
case 4:
Navigator.pushNamed(context, AppConstant.MenuRouteD);
break;
}
Widget MenuCard(){
Card(
elevation: 0.2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0)),
child: InkWell(
onTap: () {
_menuNavigate(menu[index]);
},
)
}
类菜单数据{
菜单数据(this.icon、this.title、this.route);
最终的Iconda图标;
最后的字符串标题;
最终管柱路线;
}
列表菜单列表=[
MenuData(Icons.move__至_收件箱_'菜单A',AppConstant.MenuRouteA),
菜单数据(Icons.move_至“菜单B”中的“收件箱”,AppConstant.MenuRouteB),
菜单数据(Icons.move__to_inbox__'Menu C',AppConstant.MenuRouteC),
菜单数据(Icons.move__to_inbox__'Menu D',AppConstant.MenuRouteD),
];
void\u menuNavigate(整数索引){
开关(索引){
案例1:
pushNamed(上下文,AppConstant.MenuRouteA);
打破
案例2:
pushNamed(上下文,AppConstant.MenuRouteB);
打破
案例3:
pushNamed(上下文,AppConstant.MenuRouteC);
打破
案例4:
Navigator.pushNamed(上下文,AppConstant.MenuRouteD);
打破
}
小部件菜单卡(){
卡片(
标高:0.2,
形状:圆形矩形边框(
边界半径:边界半径。圆形(8.0)),
孩子:InkWell(
onTap:(){
_菜单(菜单[索引]);
},
)
}
如何使“menuNavigate变成switch for loop以避免重写许多代码,我尝试构建一个switch case,但这不起作用,并且出现了“case expressions must is constant.dart(non_constant_case_expression)”的错误
void\u menuNavigate(整数索引){
开关(索引){
对于(inti=0,i只需使用Navigator.pushNamed(context,menuList[index].route);
as
void _menuNavigate(int index) {
Navigator.pushNamed(context, menuList[index].route);
}
开关大小写不要这样使用。For循环也一样。你可以在你的情况下使用For循环,删除你的开关。但是开关大小写比For循环好。在你的开关情况下,你必须使用4次大小写,你可以使用loop代替Switch case,但在循环中,你将有4个条件语句,所以在你的情况下,不会有代码因循环th而减少好的。那就和开关箱呆在一起吧。祝你编码愉快。
void _menuNavigate(int index) {
Navigator.pushNamed(context, menuList[index].route);
}