垂直视口被赋予了无限的高度错误[重复]

Posted

技术标签:

【中文标题】垂直视口被赋予了无限的高度错误[重复]【英文标题】:Vertical viewport was given unbounded height error [duplicate] 【发布时间】:2019-01-15 08:49:42 【问题描述】:
 @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),
      ]));
 

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

垂直视口被赋予了无限的高度。视口在 滚动方向以填充其容器。

【问题讨论】:

【参考方案1】:

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

    Widget ListView() 
    return Container(
       height:100.0,
       child: ListView(
        padding: new EdgeInsets.symmetric(vertical: 8.0),
        children: Item()));
    

【讨论】:

【参考方案2】:

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

Widget ListView() 
return new Flexible(child: new ListView(
    padding: new EdgeInsets.symmetric(vertical: 8.0),
    children: Item()));

【讨论】:

我还要补充一点,如果您使用的是Padding 小部件,您应该将它放在Flexible 小部件中。 它不起作用,我得到“RenderFlex 子项具有非零弹性,但传入的高度约束是无限的。” 它对我有用。虽然我不明白为什么如果使用灵活,错误就会消失。

以上是关于垂直视口被赋予了无限的高度错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

水平视口被赋予了无限的高度

垂直视口被赋予了无限的高度。 RenderBox 未布置:RenderViewport#34d12 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UP

BoxConstraints 强制无限高度误差

堆栈内的水平Listview:水平视口被赋予无限宽度

如何在具有(流体高度)的响应框中垂直居中文本[重复]

Twitter Bootstrap:轮播:在定义高度视口中垂直居中图像