Ответ
Expanded — это виджет в Flutter, который занимает доступное пространство вдоль главной оси родительского Row, Column или Flex. Он распределяет свободное место между всеми Expanded виджетами внутри одного контейнера, учитывая их flex-фактор (по умолчанию равен 1).
Пример:
Row(
children: [
Expanded(
flex: 2, // Занимает 2/3 пространства
child: Container(color: Colors.red),
),
Expanded(
flex: 1, // Занимает 1/3 пространства
child: Container(color: Colors.blue),
),
],
)
Если flex не указан, все Expanded делят пространство поровну. Без Expanded дочерние виджеты занимают только необходимую им ширину/высоту.
Ответ 18+ 🔞
Смотри, объясню про этот Expanded в Flutter, чтобы ты не ломал голову, как я в своё время.
Представь себе, что у тебя есть Row или Column. Это как диван, на который ты рассаживаешь своих виджетов-друзей. Без Expanded каждый друг — сам по себе эгоист: сидит ровно на своей жопе, сколько ему нужно, и ни сантиметром больше. Один — тощий, другой — толстый, между ними — пустота, как будто они в ссоре.
А теперь ты говоришь: «Ребята, хватит бздеть, занимайте весь диван!». Вот для этого и нужен Expanded. Ты заворачиваешь каждого придурка в этот виджет, и они начинают делить оставшееся свободное место, как последнюю шоколадку.
Главный прикол — в параметре flex. Это как коэффициент жадности. По умолчанию у всех flex: 1, то есть «дели поровну, не выёбывайся». Но если одному поставишь flex: 2, а другому оставишь flex: 1, то первый хапнет в два раза больше места. Честно? Нет. Справедливо? Да похуй, так работает.
Вот смотри на этот код, тут всё понятно:
Row(
children: [
Expanded(
flex: 2, // Этот красный контейнер — жадная сволочь, заберёт 2/3 всего места
child: Container(color: Colors.red),
),
Expanded(
flex: 1, // А этот синий — скромняга, довольствуется оставшейся 1/3
child: Container(color: Colors.blue),
),
],
)
Если flex не указывать вообще, то все Expanded внутри одного родителя поделят пространство строго пополам, как братья-близнецы. А без Expanded твои виджеты будут торчать, как хуй с горы, занимая только свою родную ширину, и всё свободное место так и останется пустым. Пиздец, да? Вот и весь секрет.