如何在Flutter中进行缩放打开动画?

时间:2017-08-29 22:36:20

标签: animation dart flutter

我试图在颤动中做这个动画:

https://material.io/guidelines/motion/choreography.html#choreography-creation

enter image description here

我的问题是我完全不知道该怎么做。 据我所知,颤抖的小部件根本不知道他们的位置,也不知道位置或其他小部件。 而且您无法在构建方法中访问context.size

我尝试使用英雄动画来做到这一点。或ScaleTransition。但它绝对不起作用。

2 个答案:

答案 0 :(得分:4)

您可以使用showMenu动态显示指定位置的弹出菜单。考虑使用PopupMenuButton,这是一个IconButton,可以在点按时自动显示菜单。图库中有一个example。如果showMenu没有达到您想要的效果,您可以复制popup_menu.dart中的代码并自定义它以制作您自己的版本。它使用CustomSingleChildLayoutPopupRoute

如果您只想将MaterialCard置于其他元素之上,则可以对其进行一些提升,并在Positioned内使用Stack。您可以使用AnimatedSize使用Curve调整元素的大小。这不会自动与Android上的后退按钮互动,因此如果您需要,则可能必须使用addLocalHistoryEntryPopupRoute

答案 1 :(得分:0)

如果我理解您的意思是正确的-您想显示方形小部件,并且动画最多不适合显示,因为小部件不知道其大小。 在这种情况下,您可以尝试MediaQuery.of(context).size.width-它返回屏幕的宽度,因此您可以使用它来计算小部件的大小