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

Виджет Flexible в Flutter

Виджет Flexible, как и Expanded, участвует в делении места в Row или Column по flex. Разница в том, обязан ли потомок заполнить выделенную долю целиком.

Виджет Expanded - это Flexible с fit: FlexFit.tight: потомок должен растянуться на всю отведённую ширину или высоту. При FlexFit.loose виджет получает максимум до своей доли, но может остаться меньше, если сам хочет компактный размер:

Row( children: [ Flexible( fit: FlexFit.loose, child: Container( color: Colors.blue, child: const Text('Narrow'), ), ), Flexible( fit: FlexFit.tight, child: Container( color: Colors.green, child: const Text('Full share'), ), ), ], )

Режим loose удобен для кнопок и чипов: ряд делит пространство справедливо, но подпись не растягивается без нужды. Режим tight ведёт себя как Expanded - фон или Container заполняет ячейку:

Row( children: [ const Text('Filter'), Flexible( flex: 1, fit: FlexFit.loose, child: Align( alignment: Alignment.centerRight, child: TextButton( onPressed: () {}, child: const Text('Reset'), ), ), ), ], )

Соберите Row: слева Text 'City', справа Flexible с fit: FlexFit.loose и Text 'Moscow', прижатым к правому краю через Align. Подпись города не должна растягиваться на всю ширину - только занять нужное место в своей доле.

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