Viewports expand in the cross axis to fill their container and constrain their children to match their extent in the cross axis. In this case, a horizontal viewport was given an unlimited amount of vertical space in which to expand.
Column(
children: <Widget>[
Expanded( // wrap in Expanded
child: ListView(...),
),
],
)
//Or
Column(
children: <Widget>[
SizedBox( // wrap in SizedBox with fixed height
height: 300,
child: ListView(...),
),
],
)