Horizontal ListView flutter WITHOUT explicit height
The Flutter framework can only know the height of a widget once it's been built.
If you're building ListView
children dynamically, it can't calculate the required height of the ListView
until all it's children have been built, which might never happen (infinite ListView
).
You can either give the ListView
a fixed height and build its children dynamically or have the ListView's
height depend on it's children, in which case you'd need to build all it's children upfront.
Posting answer for OP who edited their answer into their question
Solved the problem by creating a custom builder method like so:
Widget _buildFeaturedCards(List<Product> product) {
final cards = <Widget>[];
Widget FeautredCards;
if (product.length > 0) {
for (int i = 0; i < product.length; i++) {
cards.add(FeaturedCard(product[i]));
print(product.length);
}
FeautredCards = Container(
padding: EdgeInsets.only(top: 16, bottom: 8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(children: cards),
),
],
),
);
} else {
FeautredCards = Container();
}
return FeautredCards;
}
This creates the necessary scrolling widgets upfront instead of lazily like ListView.builder
would.