Flutter如何将变量与两个字符串对比后按需构建Widget
问题原因
你当前代码的判断条件currentValue == "Kare" && "Dikdörtgen"不符合Dart语法规范:
&&是逻辑与运算符,要求左右两侧都为布尔类型的值,你的写法会先判断currentValue == "Kare"的结果,再默认把"Dikdörtgen"这个非空字符串判定为真值,最终只要currentValue等于"Kare"条件就会成立,不会校验是否匹配"Dikdörtgen",完全达不到你要匹配两个字符串的需求。
修正方案
如果你需要只要currentValue匹配两个字符串中的任意一个就返回目标Container,有两种常用实现方式:
- 用逻辑或运算符
||分别写等于判断,适合匹配值少的场景
Widget buildSecondDropDown() { return currentValue == "Kare" || currentValue == "Dikdörtgen" ? Container( width: 200, padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 4, ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), color: Colors.white, ), ) : Container(); }
- 把需要匹配的字符串放入列表调用
contains()方法判断,适合匹配值多、后续可能新增匹配规则的场景,代码扩展性更强
Widget buildSecondDropDown() { const targetList = ["Kare", "Dikdörtgen"]; return targetList.contains(currentValue) ? Container( width: 200, padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 4, ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), color: Colors.white, ), ) : Container(); }
注:单个字符串变量不可能同时等于两个不同的值,如果你确实需要逻辑与的判断规则,把上述代码的运算符替换为&&即可。
内容的提问来源于stack exchange,提问作者Arda Senoglu
相关产品推荐
相关产品推荐

