Horizontal viewport was given unbounded height.width.

简介: Horizontal viewport was given unbounded height.width.

Horizontal viewport was given unbounded height.

Vertical viewport was given unbounded width.


在写纵向或横向的布局的时候,一不小心就会遇到这个异常,宽度或高度溢出,导致widget不显示。


比如一个简单的例子:

      body: Column(
        children: <Widget>[
          Text("aaaaaa"),
          child: new ListView.builder(
              itemCount: articleDatas.length,
              itemBuilder: (BuildContext context, int position) {
                if (position.isOdd) return new Divider();
                return getRow(position);
              }),
        ],
      ),

Column中只有一个Text和ListView,但是效果确实ListView不显示,只显示Text。

随便报了一下Horizontal viewport was given unbounded height.异常。

原因就是flutter不知道ListView的高度而导致无法渲染。


所以



解决办法一:固定高度

直接用Container包裹起来写死高度。

      body: Column(
        children: <Widget>[
          Text("aaaaaa"),
          Container(
              height: 200,
            child: new ListView.builder(
                itemCount: articleDatas.length,
                itemBuilder: (BuildContext context, int position) {
                  if (position.isOdd) return new Divider();
                  return getRow(position);
                }),
              )
        ],
      ),

这样虽然可以,但是如果高度需要自适应的话,写死就不行了



解决办法二:shrinkWrap: true

给ListView的shrinkWrap属性设置为true


shrinkWrap: true在android中有点像wrap_content的意思。


但是编译之后会发现页面底部会有超长的黄色警告。


所以还是不行



解决办法三:Flexible

Flexible是flutter中的一个弹性布局,相当于android中的LinearLayout。


Flexible中有一个flex属性,等于layout_weight,把剩余空间全部占掉。


所以,我们用Flexible把ListView包裹起来即可


Flexible(
            child: new ListView.builder(
                ...
                }),
          )


所以第三种一般才是终极的解决办法,第一种虽然也可以,但是局限性太多。





更多详细内容:https://blog.csdn.net/yuzhiqiang_1993/article/details/89451080


目录
相关文章
|
6月前
|
XML 存储 编解码
svg的viewBox、width和height的设置说明
svg的是没有边界的,svg画布只是用于展示svg世界中某一个范围的内容,而对于超过了svg画布范围的内容,则会被遮挡。默认svg画布默认显示世界坐标下原点坐标的width*height面积的矩形视野。
|
6月前
|
前端开发
line-height与height的区别
line-height与height的区别
58 0
html+css实战94-内容width和height
html+css实战94-内容width和height
102 0
html+css实战94-内容width和height
|
前端开发
CSS - 行内元素的 padding、margin、width、height、line-height 是否无效?
CSS - 行内元素的 padding、margin、width、height、line-height 是否无效?
504 0
CSS - 行内元素的 padding、margin、width、height、line-height 是否无效?
|
编解码 iOS开发
meta name= viewport content= width=device-width initial-scale=1 minimum-scale=1 maximum-scale=1的作用
meta name= viewport content= width=device-width initial-scale=1 minimum-scale=1 maximum-scale=1的作用
584 0
|
JavaScript 前端开发