#flutter #dart
Вопрос:
Я пытаюсь понять, как я могу иметь текст в левом нижнем углу моего пользовательского компонента карты, а также текст в левом верхнем углу, который будет выступать в качестве заголовка
Пример того, чего я пытаюсь достичь, находится здесь:
Прямо сейчас у меня есть пользовательский компонент карты, как показано ниже:
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress,
child: Container(
child: cardChild,
padding: EdgeInsets.fromLTRB(10, 8, 10, 8),
margin: EdgeInsets.fromLTRB(10, 8, 10, 8),
decoration: BoxDecoration(
color: colour,
borderRadius: BorderRadius.circular(10.0),
),
),
);
}
И тогда я использую этот компонент карты вот так:
return CustomCard(
colour: Color(0xFF303030),
cardChild: Column(
// mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
"Top Text",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 28)
),
Text(
"Bottom Text",
style: TextStyle(fontSize: 18)
)
],
),
);
Я думаю, что я мог бы сделать, это создать контейнер для текста в левом нижнем углу, это приблизило меня к результату, но я не думаю, что делал это совершенно правильно.
Ответ №1:
Вы должны добавить Expanded(child: SizedBox())
виджет между обоими Text
виджетами
return CustomCard(
colour: Color(0xFF303030),
cardChild: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Top Text", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 28)),
Expanded(child: SizedBox()),
Text("Bottom Text", style: TextStyle(fontSize: 18))
],
),
);
Если вы хотите, вы можете добавить Padding
обертку виджета Column
, чтобы добавить внутреннее дополнение к вашему Card
виджету.
Комментарии:
1. Позволит ли это переместить выравнивание нижнего текста вправо? Это работает с перемещением текста вниз (спасибо!), Хотя просто для справки на будущее, как я мог бы переместить нижний текст тоже вправо, если бы захотел?
2. вы можете обернуть свой нижний текст в Контрайнер или Выровнять виджет и изменить его выравнивание в правом нижнем углу, если хотите… или любое выравнивание.
Ответ №2:
Все, что вам нужно сделать, это добавить mainAxisAlignment: MainAxisAlignment.spaceBetween
в Column
:
https://www.dartpad.dev/fb357b9308db33ce11074a9c5f7aa41e?null_safety=true