就这么个页面,分三部分,顶部搜索栏、往下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,就会自动占用剩余空间,解决了键盘弹出挤压控件的问题:
PS:顺便一提最外层的Column换成ListView,然后里层ListView加一条shrinkWrap: true,也会自动计算高度