MaxHeight 导致小部件展开

Posted

技术标签:

【中文标题】MaxHeight 导致小部件展开【英文标题】:MaxHeight causes widget to expand 【发布时间】:2021-06-17 06:49:56 【问题描述】:

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

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

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

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

另外,我已经尝试使用 AnimatedSize 达到这个结果,它有点工作。展开的时候效果很好,但是child收起的时候瞬间塌陷,AnimatedSize的动画紧随其后。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我不确定我是否理解。我已经可以使用maxHeight: double.infinity 实现这个结果。问题是,使用无穷大,我无法制作动画。当我尝试使用AnimatedContainer 时,我得到了错误:AnimatedContainer cannot interpolate between finite and unbounded constraints。我还澄清了为什么 AnimatedSize 也不起作用。

以上是关于MaxHeight 导致小部件展开的主要内容,如果未能解决你的问题,请参考以下文章

展开的小部件必须放在 Flex 小部件内

我在列中有几个扩展的小部件。首先我展开一个小部件。当我展开第二个时,第一个应该自动折叠

ParentWidget 的使用不正确。展开的小部件必须放在 flex 小部件内

如何在 Qt 中制作可展开/可折叠的部分小部件

展开文本小部件以填充 Tkinter 中的整个父框架

Wordpress小部件正在管理区域中消失