Flutter 如何在列小部件中实现switch语句?颤振

Flutter 如何在列小部件中实现switch语句?颤振,flutter,dart,switch-statement,Flutter,Dart,Switch Statement,我想在我的专栏中加入一个switch语句,以决定在我的flatter应用程序中构建哪些儿童小部件组合。 在我的具体案例中,我创建了一个具有4种不同可能状态(animationnum.None、animationnum.etc)的枚举,每种状态都会触发不同的子构建组合 我可以通过在每个可能的小部件上面编写一个if语句来实现这一点,但这显然是一种效率低下的方法,我想简化我的代码 我觉得我离这里很近,但还不能到达那里。以下是带有占位符小部件的代码的简化版本: 谢谢 chil

我想在我的专栏中加入一个switch语句,以决定在我的flatter应用程序中构建哪些儿童小部件组合。

在我的具体案例中,我创建了一个具有4种不同可能状态(animationnum.None、animationnum.etc)的枚举,每种状态都会触发不同的子构建组合

我可以通过在每个可能的小部件上面编写一个if语句来实现这一点,但这显然是一种效率低下的方法,我想简化我的代码

我觉得我离这里很近,但还不能到达那里。以下是带有占位符小部件的代码的简化版本:

谢谢

              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语句。