垂直视口被赋予无限高度误差

jae*_*ede 12 flutter flutter-layout

 @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),
      ]));
 }
Run Code Online (Sandbox Code Playgroud)

屏幕上出现一个空白区域,控制台显示:

垂直视口被赋予无限高度.视口在滚动方向上展开以填充其容器.

jae*_*ede 16

在Flexible中包装ListView将使其工作.

Widget ListView() {
return new Flexible(child: new ListView(
    padding: new EdgeInsets.symmetric(vertical: 8.0),
    children: Item()));
}
Run Code Online (Sandbox Code Playgroud)


dma*_*ina 5

最好的解决方案是使用灵活,但如果你想给它一个确切的高度,你应该像这样使用 Container:

    Widget ListView() {
    return Container(
       height:100.0,
       child: ListView(
        padding: new EdgeInsets.symmetric(vertical: 8.0),
        children: Item()));
    }
Run Code Online (Sandbox Code Playgroud)