当用户使用动画点击不同的小部件(兄弟或父)时,如何展开和折叠小部件?
new Column(
children: <Widget>[
new header.IngridientHeader(
new Icon(
Icons.fiber_manual_record,
color: AppColors.primaryColor
),
'Voice Track 1'
),
new Grid()
],
)
我希望用户能够点击header.IngridientHeader
,然后Grid
小部件应该切换(如果可见隐藏,反之亦然)。
我正在尝试做一些类似于Collapse in Bootstrap的事情。getbootstrap.com/docs/4.0/components/collapseheader.IngridientHeader
小部件应该始终保持不变。grid
是一个可滚动(水平)的小部件。
6条答案
按热度按时间gxwragnw1#
如果你想将一个小部件折叠为零高度或零宽度,而小部件折叠时有一个溢出的子部件,我建议你使用SizeTransition或ScaleTransition。
下面是一个ScaleTransition小部件的示例,该小部件用于折叠四个黑色按钮和状态文本的容器。我的ExpandedSection小部件与列一起使用以获得以下结构。
以下是一个使用动画和SizeTransition小部件的小部件示例:
AnimatedContainer也可以工作,但Flutter可能会抱怨如果子文件的大小不能调整为零宽度或零高度的话溢出。
l7wslrjt2#
或者,您可以只使用
AnimatedContainer
来模拟此行为。kulphzqa3#
我想你正在寻找
ExpansionTile
widget。这需要一个title
属性,它相当于header和children
属性,你可以向这些属性传递在切换时显示或隐藏的小部件。你可以找到一个如何使用它here的例子。简单示例用法:
希望有帮助!
e5njpo684#
输出:
代码:
roejwanj5#
感谢@Adam Jonsson,他的回答解决了我的问题。这是关于ExpandedSection使用的demo,希望对大家有所帮助。
baubqpgj6#
另一个不需要动画控制器的解决方案是使用
AnimatedSwitcher
小部件和SizeTransition
作为过渡构建器。下面是一个简单示例:
当然,您可以自定义动画的曲线和布局构建器。