在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(),
);
这解决了空容器问题,但我们仍然有一个丑陋的三元运算符并且写起来很烦人。是否有更好的解决方案?
List.of(_buildChildren())
怎么样?其中_buildChildren
是一个sync*
方法。 - boformer