[英]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.