Во Flutter виджет Row
используется для горизонтального расположения дочерних виджетов в ряд. Свойство flex
во Flutter позволяет вам контролировать распределение доступного пространства между дочерними виджетами Row
. Вот несколько методов, которые можно использовать для достижения различных результатов с помощью гибких элементов в Row
:
-
Равное распределение: по умолчанию, если вы не укажете значение гибкости для дочерних виджетов, они будут иметь значение гибкости, равное 1, что приведет к равному распределению доступного пространства между ними. Например:
Row( children: [ Expanded(child: Container(color: Colors.red)), Expanded(child: Container(color: Colors.blue)), Expanded(child: Container(color: Colors.green)), ], )
-
Неравномерное распределение: вы можете установить разные значения гибкости для дочерних виджетов, чтобы распределить доступное пространство неравномерно. Дочерние виджеты с более высокими значениями гибкости будут занимать больше места по сравнению с виджетами с более низкими значениями гибкости. Например:
Row( children: [ Expanded(flex: 2, child: Container(color: Colors.red)), Expanded(flex: 1, child: Container(color: Colors.blue)), Expanded(flex: 3, child: Container(color: Colors.green)), ], )
-
Фиксированный размер. Если вы хотите, чтобы дочерний виджет имел фиксированный размер и не участвовал в гибком распределении, вы можете удалить виджет
Расширенный
и напрямую использовать виджет фиксированного размера, напримерКонтейнер
с указанной шириной или высотой. Например:Row( children: [ Container(width: 100, height: 50, color: Colors.red), Expanded(child: Container(color: Colors.blue)), Container(width: 150, height: 50, color: Colors.green), ], )
-
Гибкая переноска: если дочерних виджетов больше, чем может поместиться в одну строку, вы можете включить гибкую переноску, чтобы переносить дополнительные виджеты на следующую строку. Этого можно добиться, установив для свойства
wrap
виджетаRow
значениеtrue
. Например:Row( wrap: true, children: [ Container(width: 100, height: 50, color: Colors.red), Container(width: 100, height: 50, color: Colors.blue), Container(width: 100, height: 50, color: Colors.green), Container(width: 100, height: 50, color: Colors.yellow), ], )