如何在dart中编写多个条件?

2j4z5cfb  于 2023-06-03  发布在  其他
关注(0)|答案(4)|浏览(428)

我知道我们可以在属性中写一个条件为ternary operator,如下所示

onTap: textType == "birth"
                ? () {
                    FocusScope.of(context).requestFocus(FocusNode());
                    showPicker(context, birthController,ref);
                  }
                : null,

但是当涉及到多个条件时,我如何重写代码?如下面所示的代码被视为语法错误。

onTap:
if (textType == "birth"){
 //do something
}else if(textType == "place"){
//do something
}else{
 return null
}
pgccezyw

pgccezyw1#

必须使用嵌套的三元运算符。这有点丑陋,但这就是你要做的。
示例:myVar ? "hello" : myVar2 ? "hey" : "yo"
这将检查第一个条件(myVar),如果失败,则检查第二个条件(myVar2)。你也可以在这里做实际的检查,而不是只检查一个布尔值。例如:myVar == 14
或者,你可以从代码中调用一个函数,在那里你使用if/else if/else等。这是我会推荐的。
例如,从代码中调用getProperGreeting(),它将引用:

String getProperGreeting() {
... <if else chain> ...

}
xdnvmnnf

xdnvmnnf2#

试试这个:

onTap: textType == "birth" ? () {
     //do something when textType == "birth"
   } : textType == "place" ? () {
     //do something when textType == "place"
   } : () {
     //do something else
   }
wfypjpf4

wfypjpf43#

你想使用自定义方法来处理有条件的onTap

onTap: _onTapHandler
void _onTapHandler() {
    if(textType=='birth'){
      //do something
      }else if(textType=='place'){
        //do something else
      }
      else if(textType == 'foo'){
        //bar
      }
  }

或者使用如上所述的嵌套三元运算符。

fsi0uk1n

fsi0uk1n4#

我的问题是如果我有“一次三个要求”怎么办。“if and”或“if or”条件仅用于两个要求。

相关问题