Установите пространство между элементами в строке Flutter
Код:
new Container(
alignment: FractionalOffset.center,
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new FlatButton(
child: new Text('Don\'t have an account?', style: new TextStyle(color: Color(0xFF2E3233))),
),
new FlatButton(
child: new Text('Register.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),),
onPressed: moveToRegister,
)
],
),
),
А вот и результат:
https://www.dropbox.com/s/sxklyutyvbbura8/Screenshot_20181104-150928.png?dl=0
Как исправить, что два элемента FlatButton
расположены рядом, без промежутка между центром ширины экрана?
Ответы
Ответ 1
Удаление Space-:
new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
child: new Text('Don\'t have an account?',
style: new TextStyle(color: Color(0xFF2E3233))),
onTap: () {},
),
GestureDetector(
onTap: (){},
child: new Text(
'Register.',
style: new TextStyle(
color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),
))
],
),
ИЛИ ЖЕ
GestureDetector(
onTap: (){},
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text('Don\'t have an account?',
style: new TextStyle(color: Color(0xFF2E3233))),
new Text(
'Register.',
style: new TextStyle(
color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),
)
],
),
),
Ответ 2
MainAxisAlignment
начало - Разместите детей как можно ближе к началу главной оси.
конец - Разместите детей как можно ближе к концу главной оси.
центр - Разместите детей как можно ближе к середине главной оси.
spaceBetween - Поместите свободное пространство равномерно между детьми.
spaceAround - равномерно распределите свободное пространство между детьми, а также половину этого пространства до и после первого и последнего ребенка.
spaceEvenly - Распределяйте свободное пространство равномерно между детьми, а также до и после первого и последнего ребенка.
Пример:
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('Row1'),
Text('Row2')
],
)
Ответ 3
Вы можете использовать проставки, если все, что вам нужно, это небольшой интервал между элементами подряд. Пример ниже центрирует 2 текстовых виджета в ряду с некоторым интервалом между ними.
widget = Row (
children: <Widget>[
Spacer(flex: 20),
Text(
"Item #1",
),
Spacer(), // Defaults to flex: 1
Text(
"Item #2",
),
Spacer(flex: 20),
]
);
Ответ 4
Использование MainAxisAlignment.spaceBetween
new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text("Left"),
Text("Right")
],
),
Ответ 5
Попробуй это
Container(
alignment: FractionalOffset.center,
child: Row(
children: <Widget>[
Expanded(flex: 1, child: Container(),), // remove 1
FlatButton(
padding: EdgeInsets.all(0.0), // remove all padding from button 1
onPressed: () {},
child: new Text('Don\'t have an account?', style: new TextStyle(color: Color(0xFF2E3233))),
),
FlatButton(
child: new Text('Register.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),),
onPressed: (){},
),
Expanded(flex: 1, child: Container(),), // remove 2
],
),
);
Вы можете удалить 1 и 2, если вы не хотите оставлять пробелы слева и справа от кнопки.
Ответ 6
Используйте пробел в тексте
Text(' '),
Это должно сделать работу.