在 Flutter 中,如何动画将容器从 0 高度扩展到其内容的高度?

问题描述

我有一个容器,它从零高度开始,需要在用户交互后展开。

  • 我尝试使用 AnimatedContainer / AnimatedSize 并将子小部件的高度从 0 更改为 null,但在这两种情况下,Flutter 都抱怨它无法从 0 插值到 {{1 }}。
  • 我也尝试过使用 BoxConstraints(使用 null 扩展)而不是明确的高度,在这种情况下,Flutter 抱怨它无法从有限值插入到无限值。
  • 我还尝试将 mainAxisSize 设置为 min/max,在这种情况下 Flutter 抱怨 maxHeight = double.infinityvsync

如何动画扩展一个小部件,使其动态增长到足够大以包裹其内容?如果这不能动态完成,那么有什么安全的方法来调整内容大小,使其在屏幕尺寸上有意义?在 Web 开发中,我知道 null 之类的东西是相对大小的,但在 Flutter 的上下文中,我不知道如何可靠地控制事物的大小。


更新:正如@pskink 所建议的那样,将子组件包装在 Align 小部件中并为 Align 的 heightFactor 参数设置动画即可完成折叠。但是,当倒塌的孩子本身有孩子时,我仍然无法倒塌。例如,Column 小部件根本不使用 ClipRect 进行裁剪(请参阅 https://github.com/flutter/flutter/issues/29357),即使我使用 Wrap 而不是 Column,如果 Wrap 的子项是 Row,那也不起作用。不确定如何让剪辑始终如一地工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)