Flutter 如何在列小部件中实现switch语句?颤振
我想在我的专栏中加入一个switch语句,以决定在我的flatter应用程序中构建哪些儿童小部件组合。 在我的具体案例中,我创建了一个具有4种不同可能状态(animationnum.None、animationnum.etc)的枚举,每种状态都会触发不同的子构建组合 我可以通过在每个可能的小部件上面编写一个if语句来实现这一点,但这显然是一种效率低下的方法,我想简化我的代码 我觉得我离这里很近,但还不能到达那里。以下是带有占位符小部件的代码的简化版本: 谢谢Flutter 如何在列小部件中实现switch语句?颤振,flutter,dart,switch-statement,Flutter,Dart,Switch Statement,我想在我的专栏中加入一个switch语句,以决定在我的flatter应用程序中构建哪些儿童小部件组合。 在我的具体案例中,我创建了一个具有4种不同可能状态(animationnum.None、animationnum.etc)的枚举,每种状态都会触发不同的子构建组合 我可以通过在每个可能的小部件上面编写一个if语句来实现这一点,但这显然是一种效率低下的方法,我想简化我的代码 我觉得我离这里很近,但还不能到达那里。以下是带有占位符小部件的代码的简化版本: 谢谢 chil
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
switch(widget._cardAnimType)
case AnimationEnum.None: {
Widget1('args'),
Widget2('args'),
Widget3('args'),
//etc
break;
}
case AnimationEnum._card1Correct: {
Widget1('args'),
Widget2('args'),
Widget3('args'),
//etc
break;
}
///more switch statements here...
]
),
),
),
这是不可能的,因为dart支持集合if(在集合本身内部),但不支持开关 您最好的机会是提取逻辑并使用如下扩展运算符
@覆盖
小部件构建(构建上下文){
返回列(子项:[…提取方法(widget.\u cardAnimType)],);
}
列表(AnimationEnum动画){
开关(动画)
case AnimationEnum.None:{
Widget1('args'),
Widget2('args'),
Widget3('args'),
//等
打破
}
案例动画编号。\u card1正确:{
Widget1('args'),
Widget2('args'),
Widget3('args'),
//等
打破
}
}
此外,有关收集操作的更多信息,请查看此,您不能。您所能做的最好的事情就是将switch案例提取到方法中,并在其中返回值。您不能在列中实现switch语句,但可以创建单独的小部件函数,在其中可以使用switch语句。