I'm trying to replicate this design: image
These 3 are progress indicators and their number is dynamic. That's why I thought of creating a list view and populating it depending on their number. Plus their size should NOT be fixed and they must, as a group, fill the size of the screen but this isn't happening.
Container(
height: 10,
width: 400,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: 3,
itemBuilder: (BuildContext context, int index) {
return Container(
child: LinearPercentIndicator(
padding: index == 0 ? EdgeInsets.only(right: 4.0, left: 2.0) : EdgeInsets.symmetric(horizontal: 4.0),
alignment: MainAxisAlignment.start,
lineHeight: 5.0,
percent: 1.0,
progressColor: index == 2 ? theme.inboxListItemShadowColor : theme.userProfileTierBadgeColor,
backgroundColor: theme.inboxListItemShadowColor,
barRadius: Radius.circular(50)
),
);
},
),
)
And I thought this might create the design I needed but it always generates the error below:
RenderFlex children have non-zero flex but incoming width constraints are unbounded.
And that's because the Container widget containing the LinearPercentIndicator has no fixed width. And I don't want fixed width cause it won't support different screens.
So any idea on how I might do this? All i need is to have the children of the list view have dynamic widths depending on the screen and all fit in it.
Tried to give each container width like this:
width: (MediaQuery.of(context).size.width - 30) / n,
Where n is the number of progress indicators to create but it always messes up the design.