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

Flutter中如何在单个if条件下返回两个Widget?

解决Flutter中单个条件判断返回多个Widget的问题

可以通过以下两种方式实现单个if判断返回多个Widget:

方法1:使用集合展开运算符(推荐)

利用Dart的集合展开运算符...,在if块中返回一个包含两个Widget的列表,再将其展开到原Row的children中,效果和原两个if判断完全一致:

Row(
  children: [
    ... // 其他原有Widget
    if (session.server.autoVenta) ...[
      SizedBox(
        width: size.width * 0.16,
        child: const TextPrimary(
          text: "N° Doc:",
        ),
      ),
      SizedBox(
        width: size.width * 0.24,
        child: Text(order.documento),
      ),
    ],
  ]
)

方法2:用容器Widget包裹多个Widget

如果这两个Widget是固定组合,可以用Row将它们包裹成单个Widget,再在if判断中返回这个包裹后的Widget:

Row(
  children: [
    ... // 其他原有Widget
    if (session.server.autoVenta)
      Row(
        children: [
          SizedBox(
            width: size.width * 0.16,
            child: const TextPrimary(
              text: "N° Doc:",
            ),
          ),
          SizedBox(
            width: size.width * 0.24,
            child: Text(order.documento),
          ),
        ],
      ),
  ]
)

两种方法对比:方法1更贴合原代码的布局逻辑,相当于直接向原Row添加两个独立的子Widget;方法2会多一层Row嵌套,适合需要对这两个Widget统一设置布局属性的场景。

内容的提问来源于stack exchange,提问作者dylanroman03

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:18