Почему строка не находится по центру по горизонтали внутри столбца
Как мы знаем, по умолчанию столбец центрирует своих дочерних элементов по горизонтали, если он имеет полную ширину. Но когда я поместил две карты и одну строку внутри столбца, две карты помещаются горизонтально по центру по флаттеру, но строка остается такой же в своей начальной позиции? Почему?
Я думаю, что row должен быть горизонтально по центру, потому что в моем случае это дочерний элемент Column, но это не так.
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter App'),
),
body: Container(
color: Colors.purple,
height: double.infinity,
child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Card(
child: Text(
'Chart',
style: TextStyle(fontSize: 20.0),
),
elevation: 5,
color: Colors.blue,
),
Card(
child: Text(
'list of tx',
style: TextStyle(
fontSize: 20.0,
),
),
color: Colors.purple,
),
Row(
children: [
Text('this is row'),
],
),
],
),
),
);
}
}
вывод этого кода
Ответы
Это происходит потому, что по умолчанию Row занимает все горизонтальное пространство. Вы можете исправить это, указав, чтобы он занимал как можно меньше места:
Row(
mainAxisSize: MainAxisSize.min,
...
)
Установка mainAxisAlignment
для строки значения MainAxisAlignment.center
будет работать, только если внутри строки есть один виджет. Он только говорит своим детям идти в центр.
По умолчанию mainAxisSize
свойство находится MainAxisSize.max
в виджете « Строка». Вам нужно просто изменить его на « MainAxisSize.min
Чтобы повлиять на родительский виджет, который в этом примере является столбцом».
Row(
mainAxisSize: MainAxisSize.min,
...
)
Попробуйте передать mainAxisAlignment
аргумент вашей строке. Например
Row(
mainAxisAlignment: MainAxisAlignment.center,
...
)
Это сделает дочерние элементы ряда центрированными.