MaxHeight 导致小部件展开

问题描述

我正在用 Flutter 制作一张可扩展的卡片,我想为它制作动画。我希望父容器在卡片折叠时具有有限的高度,并在扩展时具有子容器所需的任何高度。我可以使用 maxHeight: double.infinity:

达到这个结果
Container(
          alignment: Alignment.topCenter,clipBehavior: Clip.hardEdge,constraints: isExpanded
              ? BoxConstraints(maxHeight: double.infinity)
              : BoxConstraints(maxHeight: 76),decoration: Boxdecoration(),child: widget.child,),)

但是除了 double.infinity 之外,我使用的任何 maxHeight 值都会导致父级具有该确切高度,而不仅仅是具有子级所需的高度。我不能使用 double.infinity 因为它不是动画的。我试过遵循这个 answer's 提示,但无论我用什么包裹孩子,父母总是在成长。我试过改变孩子,但即使我对孩子本身使用 maxHeight,父母总是增长到定义的 maxHeight。

为什么会这样?如果需要, maxHeight 不应该只导致父级扩展吗?为什么它可以与 double.infinity 一起正常工作,但不能与其他任何东西一起使用?

另外,我尝试使用 AnimatedSize 达到这个结果,它有点工作。当它展开时,它工作得很好,但是当孩子折叠时,它会立即折叠,然后是 AnimatedSize 的动画。

解决方法

编辑: 我明白你的意思,你想使用 AnimatedContainer,但为了像你想要的那样动画,它需要你指定高度。 double.infinity 在这种情况下不起作用,您收到的错误消息是正确的。 有多种方法可以获取小部件高度。我建议您查看此答案:https://stackoverflow.com/a/49650741/7248289

另外,这个可能有帮助:https://stackoverflow.com/a/54173729/7248289