Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmCdCI 45 of 125 menu
◀ ▶

Условие if в списке потомков в Flutter

Списки children у Column, Row и других виджетов - обычные Dart-списки. В Dart 3 внутри литерала списка можно писать if (условие) элемент: при истинном условии элемент попадает в список, при ложном - пропускается. Так не нужно собирать список вручную через add:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { const showSubtitle = true; const showBadge = false; return Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ const Text('Title'), if (showSubtitle) const Text('Subtitle'), if (showBadge) const Icon(Icons.verified), ], ), ), ); } }

После if можно ставить несколько виджетов в фигурных скобках, если нужно вставить блок сразу из нескольких элементов. Когда альтернатива - «ничего не добавлять», if читается проще, чем тернарный оператор с пустым SizedBox.shrink(). Условие вычисляется при каждом build; пока флаг задан константой в коде, список потомков фиксирован до следующего запуска:

Column( children: [ const Text('Step 1'), if (false) const Text('Hidden step'), const Text('Step 2'), ], )

Соберите Column так:

const hasFooter = true; Column( children: [ const Text('Article'), if (hasFooter) const Text('Author: Ann'), ], )

Присвойте флагу false: должна остаться одна строка заголовка.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить