在安卓开发中我们都知道,在需要子view充满父viewgroup的时候可以使用match-parent,就可以实现子view的高度随着父viewgroup的高度而变化,但是在flutter中应该怎么办呢?
这几天,在研究verticalDivider的时候终于被我找到了,虽然应用场景不多,但是终于是解决了一大难题
一般的,在flutter中,比如在Row中,我们希望左边是一个icon,然后右边是一个对应的文字介绍,我们可以使用Row,然后文字使用Expanded即可,就像这样:
但是遇到下面这种需求的时候呢?
例如这种,中间一根线是需要根据右边的文字高度来进行自动增高的,换句话说,也就是右边文字确定父容器Row的高度,然后中间的线要充满整个父容器。这个时候如果再用expanded的话。。就会发现报错了
那么在安卓中是怎么处理的呢?
大概思路是父容器由文字控制,然后确定中间圆圈的(收)的位置,在圆圈的上下各增加一个子控件来作为显示,
如果使用constraintlayout的话,就是上面一条线的上面顶到父view的top,下面顶到圆圈的上部,
下面一条线的上面顶到圆圈的下部,下面顶到父view的bottom
那么在flutter中,根据这个思路,终于找到了一个控件:IntrinsicHeight!来看官方的注释:
根据自己的尺寸来限制它的子view的高度,正合我意!但是下面它也说明了,能不用的话尽量不用,relatively expensive,说得很明白了,代价相当昂贵!所以整个应用中我只用了一个地方
有了这个利器,剩下的就好做多了,先用这个包裹一下整个view,然后使用类似安卓的weight属性,进行verticalDivider的高度限制即可。
至此,完结!