Во 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), ], )