首页 > 解决方案 > MaxHeight 导致小部件展开

问题描述

我正在用颤振构建一张可扩展的卡片,我想要动画。我希望父容器在卡片折叠时具有有限的高度,并在扩展时具有子容器所需的任何高度。我可以使用 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 因为那不是动画的。我已经尝试按照这个答案的提示进行操作,但是无论我用什么包裹孩子,父母总是会成长。我试过改变孩子,但即使我在孩子本身上使用 maxHeight,父母总是会增长到定义的 maxHeight。

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

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

标签: flutterdartanimationwidgetheight

解决方案


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

此外,这可能会有所帮助:https ://stackoverflow.com/a/54173729/7248289


推荐阅读