Как создать невидимый виджет с минимальным размером в Flutter?

SizedBox.shrink()
в Flutter используется для создания невидимого виджета с минимально возможным размером, то есть с размерами 0x0
. Это полезно в ситуациях, когда нужно вернуть пустой виджет или создать пустое место, не занимая дополнительного пространства в макете.
Основные сценарии использования SizedBox.shrink()
:
-
Замена виджета в условной логике: Когда вам нужно показать либо виджет, либо ничего,
SizedBox.shrink()
может заменить невидимый элемент, не нарушая макет.Пример:
Widget build(BuildContext context) { return Column( children: [ _showWidget ? SomeWidget() : SizedBox.shrink(), ], ); }
Здесь, если условие
_showWidget
ложно, вместо реального виджета будет показан пустой контейнер с размером 0x0. -
Исключение отступов или пробелов: Иногда вам нужно вставить пустой виджет без отступов, например, если вы используете
SizedBox
для задания фиксированного отступа, но хотите, чтобы в некоторых случаях его не было.Пример:
Widget build(BuildContext context) { return Column( children: [ Text('First line'), _addSpacing ? SizedBox(height: 20) : SizedBox.shrink(), Text('Second line'), ], ); }
В этом примере отступ будет добавлен только при истинном значении переменной
_addSpacing
. -
Место для обязательного виджета: В некоторых случаях виджет обязательно требуется в структуре макета, но фактически вам не нужно отображать ничего. Вместо удаления этого виджета можно использовать
SizedBox.shrink()
, чтобы сохранить место в иерархии виджетов без какого-либо влияния на размеры.
Таким образом, SizedBox.shrink()
удобно использовать, когда нужно «отобразить ничего» в макете, сохраняя при этом структуру без появления лишнего пространства.