使用showGeneralDialog时-是否可以使用不同的过渡和持续时间来显示对话框,而不是再次隐藏对话框?例如,Curves.elasticOut用于显示,而较短的Curve.linear过渡用于隐藏?
ggazkfy81#
showGeneralDialog方法具有以下签名:
Future<T?> showGeneralDialog<T extends Object?>( {required BuildContext context, required RoutePageBuilder pageBuilder, bool barrierDismissible = false, String? barrierLabel, Color barrierColor = const Color(0x80000000), Duration transitionDuration = const Duration(milliseconds: 200), RouteTransitionsBuilder? transitionBuilder, bool useRootNavigator = true, RouteSettings? routeSettings, Offset? anchorPoint} )
根据文档,RouteTransitionBuilder对象:...用于定义路线到达屏幕和离开屏幕的方式。默认情况下,过渡是页面内容的线性淡化。RouteTransitionBuilder具有以下签名:
RouteTransitionsBuilder = Widget Function( BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child )
这两个动画对象用于:animation:当导航器将一条路线推到其堆栈顶部时,新路线的主动画从0.0运行到1.0。当导航器弹出最顶部的路线时,此动画从1.0运行到0.0。secondaryAnimation:当导航器将新路由推送到其堆栈顶部时,最顶部旧路由的secondaryAnimation从0.0运行到1.0。当导航器弹出最顶部路由时,其下方路由的secondaryAnimation从1.0运行到0.0。如果您想拥有不同的动画和持续时间,您可以创建自己的RouteTransitionBuilder动画,并附加一个animationController到特定的持续时间。
1条答案
按热度按时间ggazkfy81#
showGeneralDialog方法具有以下签名:
根据文档,RouteTransitionBuilder对象:
...用于定义路线到达屏幕和离开屏幕的方式。默认情况下,过渡是页面内容的线性淡化。
RouteTransitionBuilder具有以下签名:
这两个动画对象用于:
animation:当导航器将一条路线推到其堆栈顶部时,新路线的主动画从0.0运行到1.0。当导航器弹出最顶部的路线时,此动画从1.0运行到0.0。secondaryAnimation:当导航器将新路由推送到其堆栈顶部时,最顶部旧路由的secondaryAnimation从0.0运行到1.0。当导航器弹出最顶部路由时,其下方路由的secondaryAnimation从1.0运行到0.0。
如果您想拥有不同的动画和持续时间,您可以创建自己的RouteTransitionBuilder动画,并附加一个animationController到特定的持续时间。