You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何将变量与两个字符串对比后按需构建Widget

问题原因

你当前代码的判断条件currentValue == "Kare" && "Dikdörtgen"不符合Dart语法规范:

  • &&是逻辑与运算符,要求左右两侧都为布尔类型的值,你的写法会先判断currentValue == "Kare"的结果,再默认把"Dikdörtgen"这个非空字符串判定为真值,最终只要currentValue等于"Kare"条件就会成立,不会校验是否匹配"Dikdörtgen",完全达不到你要匹配两个字符串的需求。

修正方案

如果你需要只要currentValue匹配两个字符串中的任意一个就返回目标Container,有两种常用实现方式:

  1. 用逻辑或运算符||分别写等于判断,适合匹配值少的场景
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();
  }
  1. 把需要匹配的字符串放入列表调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 18:42:04