I am trying to create an add-button, where the icon inside is just a simple ' '-character, but for some reason it just sits at the bottom of the container instead of in the center
Troubling text in a container
This is the structure if needed, where I have my Text widget inside a Center widget, and also the textAlign set to TextAlign.center.
Underneath I have provided all the code leading up to the Text widget
Column(
children: [
...,
Expanded(
child: Row(
children: [
Container(
width: 80,
alignment: Alignment.topCenter,
child: Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 10),
child: Container(
width: 60,
height: 60,
decoration: const BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.all(Radius.circular(24))
),
child: const Center(
child: Text(" ",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 70,
),
),
),
),
),
],
),
),
...,
],
),
)
],);
Note this is my first time using flutter.
CodePudding user response:
The more better and optimal way will be by using the Material()
widget and giving the size with SizedBox()
. And later you can wrap your widget with Row()
Column()
etc.
SizedBox(
height: 80,
width: 80,
child: Material(
color: Colors.yellow,
borderRadius: BorderRadius.circular(20),
child: Center(
child: Text(
" ",
style: TextStyle(
fontSize: 50,
color: Colors.black,
),
textAlign: TextAlign.center,
),
),
),
)
CodePudding user response:
So your font size is too big, and your box is too small to show that the " " is in the centre of the box.
But it's in the centre, if you use this values for your second container you'll see it is in the center.
Column(
children: [
...,
Expanded(
child: Row(
children: [
Container(
width: 80,
alignment: Alignment.topCenter,
child: Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 10),
child: Container(
width: 80,
height: 80,
decoration: const BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.all(Radius.circular(24))
),
child: const Center(
child: Text(" ",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 70,
),
),
),
),
),
],
),
),
...,
],
),
)
],);
So to do this use an icon and you'll have a better presentation you can see example here
Row(
children: [
Container(
width: 80,
alignment: Alignment.topCenter,
child: Column(
children: [
Padding(
padding:
const EdgeInsets.symmetric(vertical: 5, horizontal: 10),
child: Container(
width: 60,
height: 60,
decoration: const BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.all(Radius.circular(24))),
child: const Center(
child: Icon(Icons.add, size: 35,)
),
),
),
],
),
)
],
),