#flutter #dart
#flutter #dart
Вопрос:
Как я мог бы выровнять следующее так, чтобы начальные и конечные значки могли оставаться там, где они есть.
Но сделайте текст ровным, чтобы начать. Это означает, что текст «Изменить адрес электронной почты» остается таким, какой он есть.
Текстовый текст «Сменить пароль», начальная буква C будет соответствовать началу C и так далее?
В настоящее время используется параметр пробела между строками. Также пробовал использовать разделитель между виджетами, но это тоже не дает мне нужного контроля.
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(Icons.email),
// Spacer(flex: 2), // playing around with spacer and flex doesn't give the control I am looking for
Text('Change Email Address'),
Icon(Icons.keyboard_arrow_right),
],
),
SizedBox(height: 10),
Divider(),
SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween ,
children: [
Icon(Icons.lock),
Text('Change Password'),
Icon(Icons.keyboard_arrow_right),
],
),
Хотите, чтобы это выглядело следующим образом:
icon Change Email Address Icon
icon Change Password Icon
icon Change Add / Change Bio Icon
icon Notification Icon
icon Sign Out Icon
Это то, что у меня есть в настоящее время. Как вы можете видеть, текст не выровнен.
Ответ №1:
Вы должны попробовать использовать ListTile для такого рода вещей, поскольку listTiles имеет параметры для начальных, заголовочных и конечных виджетов и автоматически выравнивает текст в заголовке, чтобы начать там, где вы хотите
Column(
children: [
ListTile(
leading: Icon(Icons.lock),
title: Text('Change Email Address'),
trailing: Icon(Icons.keyboard_arrow_right),
),
ListTile(
leading: Icon(Icons.lock),
title: Text('Change Password'),
trailing: Icon(Icons.keyboard_arrow_right),
),
],
)
Ответ №2:
Для этого вы также можете использовать mainAxisAlignment
свойство виджета строки.
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(Icons.home),
Text("Home")
Icon(Icons.arrow_forward_ios),
],
)
Это добавит максимальное пространство между всеми виджетами внутри виджета строки, что может помочь вам получить такой макет.
Комментарии:
1. Это не приведет к выравниванию текста по назначению, если тексты имеют разную длину, плюс это именно то, что было предпринято в моем вопросе.
Ответ №3:
zaza.codes уже отвечает на вопрос, но в любом случае вы также можете получить строку в строке вместо использования списка.
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Icon(Icons.home),
Text("Home")
]
),
Icon(Icons.arrow_forward_ios),
],
)