前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Horizontal viewport was given unbounded height.width.

Horizontal viewport was given unbounded height.width.

作者头像
yechaoa
发布2022-06-10 14:04:01
1.2K0
发布2022-06-10 14:04:01
举报
文章被收录于专栏:移动开发专栏

Horizontal viewport was given unbounded height. Vertical viewport was given unbounded width.

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

比如一个简单的例子:

代码语言:javascript
复制
      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中只有一个TextListView,但是效果确实ListView不显示,只显示Text。 随便报了一下Horizontal viewport was given unbounded height.异常。 原因就是flutter不知道ListView的高度而导致无法渲染。

所以

解决办法一:固定高度

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

代码语言:javascript
复制
      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包裹起来即可

代码语言:javascript
复制
          Flexible(
            child: new ListView.builder(
                ...
                }),
          )

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决办法一:固定高度
  • 解决办法二:shrinkWrap: true
  • 解决办法三:Flexible
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档