将受约束框的大小调整为其 maxHeight 或相应的大小。最小高度

use*_*643 2 flutter flutter-layout

我有一个最小高度为 50 和最大高度为 400 的 ConstrainedBox。CB 包含一个将自身着色为黄色的容器。

请注意,这里的 CB 用作抽象。基本上,该 CB 可能是具有最小/最大约束的任何类型的小部件。

现在我有两种情况:

  • 我想让 CB 尽可能大(取 maxHeight)。

  • 我想让 CB 尽可能小(取 minHeight)。

我试过

Widget build(BuildContext _) => Scaffold(
      backgroundColor: Colors.transparent,
      body: SizedBox.expand(
          child: ConstrainedBox(
              constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
              child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)

它显示了一个全屏黄色框,但我想要 400 像素!

  Widget build(BuildContext _) => Scaffold(
      backgroundColor: Colors.transparent,
      body: SizedBox.shrink(
          child: ConstrainedBox(
              constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
              child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)

这导致一个空的脚手架,但我想要 50 像素!

编辑:我解决了这个问题,请看我自己的答案。

use*_*643 7

玩了一会儿后,我想出了以下几点:

Widget build(BuildContext _) => Scaffold(
      backgroundColor: Colors.transparent,
      body: IntrinsicHeight(
          child: ConstrainedBox(
              constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
              child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)

将以 50 像素渲染框,并且

Widget build(BuildContext _) => Scaffold(
      backgroundColor: Colors.transparent,
      body: Container(
          child: ConstrainedBox(
              constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
              child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)

将以 400 像素渲染框。

因此,看起来 IntrinsicHeight 会将孩子的大小调整为其minHeight,而将其放入 Container 会产生maxHeight