1

I have a row im trying to align correctly. It holds two cards id like to be spaced evenly, and an icon button aligned to the right side of the row.

With just the cards using the following code,

Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Card(...), Card(...), ], ), 

it looks like this: enter image description here

But When i add an icon button with the following code

Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Card(), Card(), Spacer(), IconButton( icon: Icon(Icons.close), onPressed: () { Navigator.of(context).pop(); }, ), ], ), 

it looks like this: enter image description here

Any idea what I'm doing wrong? Thanks!

3 Answers 3

2

A note from Spacer

MainAxisAlignment.spaceBetween, or MainAxisAlignment.spaceEvenly will not have any visible effect: the Spacer has taken up all of the additional space, therefore there is none left to redistribute.

As for the you are trying to archive, I am using nested row for this

 Row( children: [ Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Card( child: Text("A"), ), Card( child: Text("A"), ), ], ), ), IconButton( icon: Icon(Icons.close), onPressed: () {}, ), ], ), 

enter image description here

Sign up to request clarification or add additional context in comments.

Comments

1

It is caused by the Spacer widget.
The Spacer widget will use all the space available by default.

You can remove the Spacer widget so all your child will be evenly-spaced.

Comments

1

It is because of the spacer widget, Spacer widget by default took the whole width. give it a specific width, instead use sizedBox and give it a width for horizontal space.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.