Flutter secondaryAnimation未运行

时间:2019-04-11 02:06:14

标签: flutter flutter-animation

我使用以下代码将名为SecondPage的页面推入堆栈。使用animation的动画按预期运行。出现SecondPage时,它会从屏幕底部向上滑动。

当我看着SecondPage时,我将ThirdPage推到SecondPage的顶部。当我看到ThirdPage出现在屏幕上时,基于下面对SecondPage的使用,我没有看到secondaryAnimation向上滑动。实际上,在过渡到SecondPage的过程中根本没有ThirdPage的动画。 SecondPage处于静止状态,而被ThirdPage覆盖。

SecondPage出现时,如何使ThirdPage向上移动?

Navigator.push(
  context,
  PageRouteBuilder(
    pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
      return SecondPage();
    },
    transitionsBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
      return SlideTransition(
        position: Tween<Offset>(
          begin: const Offset(0.0, 1.0),
          end: Offset.zero,
        ).animate(animation),
        child: SlideTransition(
          position: Tween<Offset>(
            begin: Offset.zero,
            end: const Offset(0.0, -1.0),
          ).animate(secondaryAnimation),
          child: child,
        ),
      );
    },
  ),
);

1 个答案:

答案 0 :(得分:0)

SecondaryAnimation不会帮助您完成此任务。您应该使用Stack而不是让另一个孩子。

这就是您需要的。

transitionsBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
  return Stack(
    children: [
      SlideTransition(
        position: Tween(begin: Offset(0, 1), end: Offset.zero).animate(animation),
        child: child,
      ),
      SlideTransition(
        position: Tween(begin: Offset.zero, end: Offset(0, -1)).animate(animation),
        child: this,
      ),
    ],
  );
},