Flutter Column嵌套ListView高度适配

image.png

就这么个页面,分三部分,顶部搜索栏、往下segment,然后就是一个ListView
一开始的代码是利用Expanded和flex来布局:

return Column(
  children: <Widget>[
    Expanded(
      child: getSearchBar(),
      flex: 1,
    ),
    Expanded(
      child: getSegmentView(),
      flex: 1,
    ),
    Expanded(
      child: getListView(),
      flex: 13,
    ),
  ],
);

然而键盘一弹出顶部控件就被挤压了,Expand flex是根据剩余可用空间分配比例,键盘弹出时键盘的高度就不参与计算了。

后来发现不用flex就好了,修改如下:

return Column(
  children: <Widget>[
    getSearchBar(),
    getSegmentView(),
    Expanded(
      child: getListView(),
    ),
  ],
);

在ListView外面套了一层Expanded,但不设置flex,就会自动占用剩余空间,解决了键盘弹出挤压控件的问题:


image.png

PS:顺便一提最外层的Column换成ListView,然后里层ListView加一条shrinkWrap: true,也会自动计算高度

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容