如何更改 PopScreen 动画的持续时间?
How do I change the duration of PopScreen Animation?
我第一次尝试为 Navigation.push 实现自定义动画。这是我的代码:
onGenerateRoute: (routeSettings) {
return PageRouteBuilder<dynamic>(
settings: routeSettings,
pageBuilder: (context, Animation<double> animation,
Animation<double> secondaryAnimation) {
switch (routeSettings.name) {
case WelcomeScreen.id:
return WelcomeScreen();
case LoginScreen.id:
return LoginScreen();
case RegistrationScreen.id:
return RegistrationScreen();
case HomeScreen.id:
return HomeScreen();
default:
return null;
}
},
transitionDuration: Duration(milliseconds: 200),
transitionsBuilder: (context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
animation =
CurvedAnimation(curve: Curves.easeOut, parent: animation);
return SlideTransition(
position: Tween(begin: Offset(1.0, 0.0), end: Offset(0.0, 0.0))
.animate(animation),
child: child,
);
});
},
问题是如果我将动画持续时间设置为例如。 2 秒,Push 动画遵循该持续时间,但 Pop 动画没有。如何确保我的 Pop 动画遵循相同的持续时间?
您必须设置将要使用的 reverseTransitionDuration
或 pop
我第一次尝试为 Navigation.push 实现自定义动画。这是我的代码:
onGenerateRoute: (routeSettings) {
return PageRouteBuilder<dynamic>(
settings: routeSettings,
pageBuilder: (context, Animation<double> animation,
Animation<double> secondaryAnimation) {
switch (routeSettings.name) {
case WelcomeScreen.id:
return WelcomeScreen();
case LoginScreen.id:
return LoginScreen();
case RegistrationScreen.id:
return RegistrationScreen();
case HomeScreen.id:
return HomeScreen();
default:
return null;
}
},
transitionDuration: Duration(milliseconds: 200),
transitionsBuilder: (context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
animation =
CurvedAnimation(curve: Curves.easeOut, parent: animation);
return SlideTransition(
position: Tween(begin: Offset(1.0, 0.0), end: Offset(0.0, 0.0))
.animate(animation),
child: child,
);
});
},
问题是如果我将动画持续时间设置为例如。 2 秒,Push 动画遵循该持续时间,但 Pop 动画没有。如何确保我的 Pop 动画遵循相同的持续时间?
您必须设置将要使用的 reverseTransitionDuration
或 pop