Вот более простая версия, которую я использую:

петании виджеты, такие как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(),
);

Это решает проблему пустого контейнера, но у нас все еще есть уродливый троичный, и писать его утомительно.

Есть ли лучшее решение?

Ответы на вопрос(2)

Ваш ответ на вопрос