我使用以下代码将名为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,
),
);
},
),
);
答案 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,
),
],
);
},