@override Widget build(BuildContext context) { return Column( children: <Widget>[ new Text("Some text"), ListView() ], ); } Widget ListView() { return ListView( padding: EdgeInsets.symmetric(vertical: 8.0), children: Item(), ); } List<Item> Item() { return list .map((item) => Item(text: item)) .toList(); } class Item extends ListTile { Item({String text, GestureTapCallback onTap}) : super(subtitle: Column(children: <Widget>[ Text(text), ])); }
A blank space appears on the screen and the console says:
Vertical viewport was given unbounded height. Viewports expand in the scrolling direction to fill their container.
To fix the vertical viewport was given unbounded height error, you can either set the shrinkWrap property of the ListView widget to true or wrap it inside the Expanded/SizedBox widget (with height property).
Viewport is the visual workhorse of the scrolling machinery. It displays a subset of its children according to its own dimensions and the given offset. As the offset varies, different children are visible through the viewport.
ListView is a very important widget in a flutter. It is used to create the list of children But when we want to create a list recursively without writing code again and again then ListView. builder is used instead of ListView. ListView. builder creates a scrollable, linear array of widgets.
Wrapping ListView inside Flexible will make it work.
Widget ListView() { return new Flexible(child: new ListView( padding: new EdgeInsets.symmetric(vertical: 8.0), children: Item())); }
The best solution is to use Flexible, but if you want to give it an exact height you should use Container like this:
Widget ListView() { return Container( height:100.0, child: ListView( padding: new EdgeInsets.symmetric(vertical: 8.0), children: Item())); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With