flutter 设置控件最大高度,超过最大高度控件可滑动

557 阅读1分钟

想要实现一个功能:在一个控件内展示一个文本,当文本过长时控件可上下滑动。

一:设置控件最大显示高度,最小显示高度。给Text设置父控件SingleChildView,再给SingleChildView设置父控件Container,Container的constraints设置最大高度和最小高度。 但是发现,并没有实现想要的效果,SingleChildView直接将container撑满了最大高度。🤔️为什么SingleChildView会默认撑满控件最大高度呢?源码中可知:SingleChildScrollView 默认会将其子部件的大小设置为最大尺寸,以便在滚动时可以显示所有内容。这种行为是因为 SingleChildScrollView 的默认行为是将其子部件大小设置为尽可能大,从而确保其内容不会被裁剪或截断,并且可以在滚动视图中完全显示。

WX20231225-230129@2x.png

最终发现:将SingleChildView父控件设置为IntrinsicHeight,即可达到想要的效果:

代码如下:

``IntrinsicHeight(

    child: SingleChildScrollView(

  child: Text.rich(

    textAlign: TextAlign.start,

    TextSpan(children: [

      TextSpan(

          text: model.content,

          style: TextStyle(

              fontSize: Dimens.font_sp14,

              color: ColorValues.color606266,

              height: 1.2)),

    ]),

  ),

))``

IntrinsicHeight作用是什么?将子部件包裹在 IntrinsicHeight 中,它会测量子部件的最大高度,并将这个最大高度应用到所有的子部件上,使得它们的高度都相同,等于子部件的最大自然高度。