flutter - 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 的动画紧随其后。
解决方案
编辑:我明白你的意思,你想使用 AnimatedContainer,但为了像你想要的那样制作动画,它需要你指定高度。double.infinity
在这种情况下不会这样做,您收到的错误消息是正确的。有一些方法可以获得小部件的高度。我建议你检查这个答案:https ://stackoverflow.com/a/49650741/7248289
此外,这可能会有所帮助:https ://stackoverflow.com/a/54173729/7248289
推荐阅读
- mysql - 返回行 ID 和 2 个字段,其中 2 个字段是唯一的
- javascript - 四舍五入到最后 15 分钟
- node.js - 使用 Node-soap 或 Strong-soap 时如何获取服务器 url 给客户端
- angular - Validators.required, Validators.email
- javascript - 使用 SVG rect 作为灯箱,并为整个页面剪裁?
- weka - WEKA 中十倍交叉验证的结果不一致
- ckeditor - Typo3 8.7.16 CKEditor:CKEditor 包含来自错误扩展名的 css 文件
- asp.net-core - 使用 aspnetcore 2.1 时的地狱?
- docker - nginx 服务页面代码而不是页面内容
- c++ - curl_easy_init 失败时如何获取错误原因