繁体   English   中英

如何有条件地将小部件添加到列表中?

[英]How to conditionally add widgets to a list?

在 Flutter 中, Row / ListView / Stack等小部件不处理 null 子级。 因此,如果我们想有条件地将小部件添加为子项,我通常会执行以下操作:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : Container(),
  ],
);

但是添加一个空容器感觉很奇怪。

另一种解决方案是where过滤器:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : null,
  ].where((t) => t != null).toList(),
);

这样就解决了空容器问题,但我们仍然有一个丑陋的三元组,写起来很累。

有没有更好的解决方案?

在 flutter 中,诸如Row / ListView / Stack小部件不处理空子级。 因此,如果我们想有条件地将小部件添加为子部件,我通常会执行以下操作:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : Container(),
  ],
);

但是添加一个空容器感觉很奇怪。

另一种解决方案是where过滤器:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : null,
  ].where((t) => t != null).toList(),
);

这解决了空容器问题,但我们仍然有一个丑陋的三元,写起来很烦人。

有没有更好的解决办法?

在 flutter 中,诸如Row / ListView / Stack小部件不处理空子级。 因此,如果我们想有条件地将小部件添加为子部件,我通常会执行以下操作:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : Container(),
  ],
);

但是添加一个空容器感觉很奇怪。

另一种解决方案是where过滤器:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : null,
  ].where((t) => t != null).toList(),
);

这解决了空容器问题,但我们仍然有一个丑陋的三元,写起来很烦人。

有没有更好的解决办法?

在 flutter 中,诸如Row / ListView / Stack小部件不处理空子级。 因此,如果我们想有条件地将小部件添加为子部件,我通常会执行以下操作:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : Container(),
  ],
);

但是添加一个空容器感觉很奇怪。

另一种解决方案是where过滤器:

Row(
  children: <Widget>[
    foo == 42 ? Text("foo") : null,
  ].where((t) => t != null).toList(),
);

这解决了空容器问题,但我们仍然有一个丑陋的三元,写起来很烦人。

有没有更好的解决办法?

 Row( children: [ if (_id == 0) ...[ Container() ] else if(_id == 1)...[ Text("Hello") ] else ...[ SizedBox(width: 20) ], ], ),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM