【发布时间】:2020-08-10 20:55:15
【问题描述】:
我需要动画方面的帮助,当我点击第一个屏幕中的 FAB 图标时,该图标会随着动画一起上升,而另一个屏幕(如第二张图片所示)应该会显示像窗帘一样的动画。并且 fab 图标应该像第二张图片一样设置在应用栏中。
底部菜单应该在两个屏幕中都有,就像给出的屏幕截图一样。
【问题讨论】:
标签: flutter flutter-layout flutter-dependencies flutter-animation
我需要动画方面的帮助,当我点击第一个屏幕中的 FAB 图标时,该图标会随着动画一起上升,而另一个屏幕(如第二张图片所示)应该会显示像窗帘一样的动画。并且 fab 图标应该像第二张图片一样设置在应用栏中。
底部菜单应该在两个屏幕中都有,就像给出的屏幕截图一样。
【问题讨论】:
标签: flutter flutter-layout flutter-dependencies flutter-animation
您可以做一件事,将浮动操作按钮包装到 AnimatedContainer
AlignmentDirectional _ironManAlignment = AlignmentDirectional.bottomCenter;
...
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: AnimatedContainer(
duration: Duration(seconds: 2),
alignment: _ironManAlignment,
child: FloatingActionButton(
onPressed: () {
_flyIronMan();
},
child: Icon(Icons.add),
),
),
像这样 当你按下按钮然后调用这个方法
void _flyIronMan() {
setState(() {
_ironManAlignment =
AlignmentDirectional(0.0, -0.8); //AlignmentDirectional(0.0,-0.7);
});
}
【讨论】:
只需用Hero 小部件包装每个页面上的按钮,就像这样:
Hero(
tag: 'fab',
child: FloatingActionButton()
);
【讨论】:
对于你想要实现的设计,我建议你使用sliding_up_panel而不是推新屏。
它有一个参数collapsed,您可以在其中输入FloatingActionButton 以在点击时展开面板,并在展开的面板中显示相同的按钮。只需将面板设置为不可拖动,滑动时不会展开。
请仔细阅读它的文档,我相信你可以通过这个小部件达到你想要的效果。
【讨论】:
Stack 中,然后在其顶部添加SlidingUpPanel,也可以将其包装在Positioned(bottom: 40, ...) 中。在这种情况下,它不会覆盖底栏,并且您将实现您想要的设计。