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 导致小部件展开的主要内容,如果未能解决你的问题,请参考以下文章
我在列中有几个扩展的小部件。首先我展开一个小部件。当我展开第二个时,第一个应该自动折叠