首先,解决方案可能很明显,因为我是Flutter的新手,但我已经搜索了好几个小时无济于事,所以问题就这样了。我正试图在Flutter中有一个降价描述,当敲击一个V形时应该可以扩展。
我已经尝试了AnimatedContainer
,AnimatedSize
,Flex
和Expanded
,并且还尝试查看警告“它应该只能从油漆回调或交互事件处理程序(例如手势回调)调用。”如果我试图在孩子画画前弄大小,那么颤动就会给我。
我已经看了几个地方,包括我将链接到的StackOverflow问题:
下一段代码是我试图获得扩展/折叠动画的地方。变量isExpanded
只是一个布尔值,函数_onPressed
只是切换该布尔值的变化。在此基础上,我应该在其总高度中获得降价主体,或者仅显示一点。
@override
Widget build(BuildContext context) {
markdown = Markdown(body);
var icon = (isExpanded) ? Icons.expand_less : Icons.expand_more;
var iconButton = IconButton(icon: Icon(icon), onPressed: _onPressed);
return Container(
child: Column(children: <Widget>[
AnimatedContainer(
// constraints: BoxConstraints(), this is where I'd like to set the change from 30% to infinity
child: SingleChildScrollView(child: markdown),
curve: Curves.bounceIn,
duration: Duration(milliseconds: 300),
),
iconButton
]),
);
}
我正在尝试做的是类似Trello的动画。在手机应用程序中,卡的描述是可扩展和可折叠的。扩展时,它只需要它所需的高度,甚至溢出屏幕。这意味着可滚动部分是包含描述和其他任何小部件的Widget,而不是描述本身。
实际发生的是:
BoxConstraints
设置一个高度(在MediaQuery
中)然后扩展到Size.infinity
动画无法实际处理,因为它从有界到无界。height
中的参数AnimatedContainer
设置为屏幕的30%然后设置为无穷大,则当它为无穷大时,内容就会消失。也许使用SizeTransition或ScaleTransition。这是一个answer,它使用以下小部件来折叠和展开小部件。