I am trying to make a custom BottomNavigationBar in Flutter, and here is the code.
bottomNavigationBar: Container(
margin: const EdgeInsets.fromLTRB(25, 0, 25, 25),
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: const Color.fromARGB(255, 25, 30, 32),
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Container(
padding: const EdgeInsets.fromLTRB(10, 5, 10, 5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(50),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(Icons.home_filled),
Text("Home"),
],
),
),
),
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 10, 5),
child: Icon(Icons.document_scanner, color: Colors.white),
),
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 10, 5),
child: Icon(Icons.person, color: Colors.white),
),
],
),
);
This code outcomes the following result, where the Container's width matches its parent's width, maintaining the margin and padding. The inner Row is supposed to take all available space.
Expectation
I expect the Container to be the smallest. It should not take all available width, but it should fit-wrap all its contents. There should not be spaces between the items.
The Expanded widget is not a problem here. I have also tried setting the inner Row's mainAxisSize to MainAxisSize.min but no luck. Tell me if my any portion of my question couldn't be understood.
After Removing the Expanded Widget:
Expected:
CodePudding user response:
Try below code wrap your other widget with 
CodePudding user response:
You just need to add Spacer() widget in between your Row children and it works like you want to:
bottomNavigationBar: Container(
margin: const EdgeInsets.fromLTRB(25, 0, 25, 25),
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: const Color.fromARGB(255, 25, 30, 32),
),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Container(
padding: const EdgeInsets.fromLTRB(10, 5, 10, 5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(50),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(Icons.home_filled),
Text("Home"),
],
),
),
),
Spacer(), //just add these
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 10, 5),
child: Icon(Icons.document_scanner, color: Colors.white),
),
Spacer(), //in your existing code
const Padding(
padding: EdgeInsets.fromLTRB(10, 5, 10, 5),
child: Icon(Icons.person, color: Colors.white),
),
],
),
),
CodePudding user response:




