在事件上设置动画父窗口小部件以适合孩子的大小

问题描述 投票:1回答:1

首先,解决方案可能很明显,因为我是Flutter的新手,但我已经搜索了好几个小时无济于事,所以问题就这样了。我正试图在Flutter中有一个降价描述,当敲击一个V形时应该可以扩展。

我已经尝试了AnimatedContainerAnimatedSizeFlexExpanded,并且还尝试查看警告“它应该只能从油漆回调或交互事件处理程序(例如手势回调)调用。”如果我试图在孩子画画前弄大小,那么颤动就会给我。

我已经看了几个地方,包括我将链接到的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%然后设置为无穷大,则当它为无穷大时,内容就会消失。
flutter flutter-layout flutter-animation
1个回答
0
投票

也许使用SizeTransitionScaleTransition。这是一个answer,它使用以下小部件来折叠和展开小部件。

© www.soinside.com 2019 - 2024. All rights reserved.