Reputation: 3767
I am trying to make an alignment for text and images in the row but getting it in a wrong way below is the code that i have added i am getting confused about thisalignments.
Widget containerWidget(String icon, String icontext, String text) {
return Container(
padding: EdgeInsets.all(7),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey,
),
borderRadius: BorderRadius.circular(40.0)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(left: 5, bottom: 2),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SvgPicture.asset(
icon,
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Padding(
padding: const EdgeInsets.only(top: 5, left: 10),
child: Text(
icontext,
style: TextStyle(color: const Color(0xFF449DF9)),
),
)
],
),
),
],
),
Row(
children: <Widget>[
Text(text),
],
)
],
));
}
I am gettin the output as following :
And i want the following output but somehow cannot get it.
Upvotes: 0
Views: 227
Reputation: 12673
change your mainAxisAlignment to MainAxisAlignment.start then wrap each child in Expanded
This way
Widget containerWidget(String icon, String icontext, String text) {
return Container(
padding: EdgeInsets.all(7),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey,
),
borderRadius: BorderRadius.circular(40.0)),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 5, bottom: 2),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SvgPicture.asset(
icon,
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Padding(
padding: const EdgeInsets.only(top: 5, left: 10),
child: Text(
icontext,
style: TextStyle(color: const Color(0xFF449DF9)),
),
)
],
),
),
),
Expanded(child: Text(text))
],
));
}
Upvotes: 1
Reputation: 3894
You should wrap your Rows
inside Expanded
and remove your alignment mainAxisAlignment: MainAxisAlignment.start
Like this
Widget containerWidget(String icon, String icontext, String text) {
return Container(
padding: EdgeInsets.all(7),
decoration: BoxDecoration(
border: Border.all(
color: Colors.grey,
),
borderRadius: BorderRadius.circular(40.0),
),
child: Row(
children: <Widget>[
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(left: 5, bottom: 2),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SvgPicture.asset(
icon,
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Padding(
padding: const EdgeInsets.only(top: 5, left: 10),
child: Text(
icontext,
style: TextStyle(color: const Color(0xFF449DF9)),
),
)
],
),
),
],
),
),
Expanded(
child: Row(
children: <Widget>[
Text(text),
],
),
),
],
),
);
}
Upvotes: 1