Flutter布局报错

今天在 flutter 在 ListView 里面的 itemBuilder 写布局,发现报错了:

1
RenderFlex children have non-zero flex but incoming height constraints are unbounded.

这个报错的 item 的布局就是 Column.children 里面有个 Row,然后这个 Row.children 里面有个 Column,然后给这个 Column 设置 crossAxisAlignmentCrossAxisAlignment.stretch

查了资料说报错原因是 ListView 垂直方向的计算是包裹子 View 的,也就是说子 View 必须有一个明确的高度,或者尽可能小的高度,而不能是无限高。可以用 IntrinsicHeight 组件包裹 Row,这个 Row 就能根据子控件的高度,智能调整自身高度,就不会报错了。