Трепетать внутрьRow
а такжеColumn
а такжевертикальная осьТочки.
Если макет находится в горизонтальном направлении, то главная ось относится к горизонтальному направлению, а вертикальная ось относится к вертикальному направлению;
Если макет находится в вертикальном направлении, шпиндель является вертикальным направлением, а продольная ось является горизонтальным направлением.
В линейной компоновке есть два класса перечисления, которые определяют выравнивание.MainAxisAlignment
а такжеCrossAxisAlignment
, которые представляют выравнивание по главной оси и выравнивание по вертикальной оси соответственно.
Row
Ряд можно найти вгоризонтальное направлениеупорядочить его дочерние компоненты
Конструктор следующим образом:
Row({
Key key,
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
MainAxisSize mainAxisSize = MainAxisSize.max,
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
TextDirection textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline textBaseline,
List<Widget> children = const <Widget>[],
})
Интерпретация атрибутов
textDirection
Уровень подсборочного уровня на направлении планировки (слева направо или справа налево), слева направо по умолчанию
mainAxisSize
Ряд представляет занимаемое пространство в направлении шпинделя (горизонтальном),
По умолчаниюMainAxisSize.max
Представляя, сколько горизонтального пространства занято
а такжеMainAxisSize.min
mainAxisAlignment
(эквивалент избыточного пространства для обработки элементов в макете Flex в H5 ---Учебное пособие по гибкому макету)
Представляет собой подсайдете в горизонтальном выравнивании космического занятого ряда (только еслиmainAxisSize
ценностьMainAxisSize.max
, это свойство имеет смысл)
-
MainAxisAlignment.start
Указывает текстовое содержимое вдольtextDirection
выравнивается с начальной ориентацией , (например,textDirection
стоимостьTextDirection.ltr
, это означает выравнивание по левому краю,textDirection
стоимостьTextDirection.rtl
означает правильное выравнивание. ) -
MainAxisAlignment.end
а такжеMainAxisAlignment.start
ровно наоборот; -
MainAxisAlignment.center
Указывает, что текстовое содержимое расположено по центру -
MainAxisAlignment.spaceAround
Указывает, что свободное пространство с обеих сторон каждого компонента равно -
MainAxisAlignment.spaceBetween
Указывает, что расширенное пространство разделено поровну на сегменты (content-1). -
MainAxisAlignment.spaceEvenly
Указывает, что расширенное пространство поровну разделено на (контент + 1) сегменты (часто используемые)
Пример кода:
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
Divider(), //表示一条横线
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[Text("xxx"), Text('yyy'), Text('zzz')],
),
],
),
текущий результат:
verticalDirection
Строка представляет продольную ось (вертикальное) направление выравнивания, по умолчаниюVerticalDirection.down
, что означает сверху вниз.
crossAxisAlignment
Указывает выравнивание подсборки в направлении продольной оси, высота ROW равна наибольшей высоте дочернего элемента в подкомпоненте, а ее значение иMainAxisAlignment
то же (включаяstart
,end
,center
три значения),
разница в томcrossAxisAlignment
Система отсчетаverticalDirection
,
которыйverticalDirection
значениеVerticalDirection.down
ВремяcrossAxisAlignment.start
означает выравнивание сверху,
verticalDirection
значениеVerticalDirection.up
час,crossAxisAlignment.start
относится к выравниванию по дну;
а такжеcrossAxisAlignment.end
а такжеcrossAxisAlignment.start
ровно наоборот;
children
массив дочерних компонентов
Column
Column
допустимыйвертикальное направлениеУпорядочивает свои дочерние компоненты.
Ряд и те же параметры, за исключением того, что направление компоновки перпендикулярно продольной оси шпинделя противоположно.
Конструктор следующим образом:
Column({
Key key,
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
MainAxisSize mainAxisSize = MainAxisSize.max,
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
TextDirection textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline textBaseline,
List<Widget> children = const <Widget>[],
})
Примечание:Row
а такжеColumn
- Буду
Column
ConstrainedBox
илиSizedBox
чтобы принудительно изменить ограничение ширины,
Например:
ConstrainedBox(
constraints: BoxConstraints(minWidth: double.infinity),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text("Hello"),
Text("World"),
],
),
);
БудуminWidth
установить какdouble.infinity
, чтобы ширина занимала как можно больше места.
- использовать
Center
виджет;
контроль вложенности
еслиRow
вложенный внутрьRow
,илиColumn
Снова вложенный внутрьColumn
,
тогда только для самого дальнегоRow
илиColumn
займет как можно больше места внутриRow
илиColumn
Занятое пространство является фактическим размером,
Пример:
Container(
color: Colors.green,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max, //有效,外层Colum高度为整个屏幕
children: <Widget>[
Container(
color: Colors.red,
child: Column(
mainAxisSize: MainAxisSize.max,//无效,内层Colum高度为实际高度
children: <Widget>[
Text("hello world "),
Text("I am Jack "),
],
),
)
],
),
),
);
Если вы хотите, чтобы внутриColumn
Column
,можно использоватьExpanded
Компоненты:
Expanded(
child: Container(
color: Colors.red,
child: Column(
mainAxisAlignment: MainAxisAlignment.center, //垂直方向居中对齐
children: <Widget>[
Text("hello world "),
Text("I am Jack "),
],
),
),
)
портал
Элементы управления Flutter Layout -> Wrap, Flow
Флаттерние макета управления Глава -> Flex, расширено