IntrinsicHeight

一个将其子项大小调整为其子项固有高度的组件

IntrinsicHeight的核心功能是将子组件的高度调整为子组件本身的固有高度(intrinsic height),而不是尽可能扩展。

具体行为:

  • 通常RowColumn等组件会尽可能扩展来填满父容器
  • 但如果把Row或者Column放进IntrinsicHeight中,它会强制这些组件收缩高度到它们内容的最小高度(即固有高度)
  • 这在某些布局场景中非常有用,比如当想让多个子组件在交叉轴上对齐,但又不想它们扩展填满整个可用空间时

这个类消耗很大,因为它在最终布局阶段之前会额外进行一次推测性的布局计算。尽可能避免使用它。在最坏情况下,这个组件会导致一次O(N²)的耗时布局,其中N是树的深度。

示例

IntrinsicHeight(
  child: Row(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [
      Container(
        color: Colors.red,
        width: 50,
        child: Text('A'),
      ),
      Container(
        color: Colors.blue,
        width: 50,
        child: Text('B\nB'),
      ),
    ],
  ),
)

这个例子中如果没有IntrinsicHeightRow会扩展以填满整个父容器。有了IntrinsicHeight之后,Row会压缩到两个子组件中最高的那个组件的高度。

构造函数

IntrinsicHeight.new({
  Key? key, 
  Widget? child
})

属性

属性名属性类型说明
childWidget?子组件