问题描述:

在Flutter开发中遇到:Vertical viewport was given unbounded height,意思是:垂直视窗应该是无限高的。

问题分析:

这个问题产生的原因是ListView.builder出现的高度问题,有两种解决方案。如下所示:

(1)需要在ListView.builder加入shrinkWrap: true,如下所示:

ListView(
    shrinkWrap: true, 
    children: navs,
);

(2)使用Expanded包裹。Column里面嵌套Column、ListView、EasyRefresh等具有无限延展性控件的时候,每一层都需要用Expanded包裹,漏掉一层都不行。只要每层可无限延展的控件外面都套上Expanded,允许他们最大值延展,那就没问题。此时不需要shrinkWrap: true,也可以完美显示出来。

listview控件

    widgetListView(){
     return ListView.builder(
        scrollDirection: Axis.vertical,
        itemCount: 20,
        itemBuilder: (context,i){
          return Container(child: Text('test$i'),width: 100,height: 100,color: Colors.white,);
        },
      );
    };

多层嵌套实验Column、EasyRefresh、ListView

    Column( //一层
      children:<Widget>[
        Expanded(child:
        Column( //两层
          children: <Widget>[
            Expanded(
              child:EasyRefresh( //三层
                  child:widgetListView() //四层,这层的Expanded在EasyRefresh内部实现了
                )
              )
            ],
          )
        )
      ]
    );

标签: none

添加新评论