dart 是否可以使用另一种过渡来显示对话框而不是隐藏对话框

juzqafwq  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(80)

使用showGeneralDialog时-是否可以使用不同的过渡和持续时间来显示对话框,而不是再次隐藏对话框?
例如,Curves.elasticOut用于显示,而较短的Curve.linear过渡用于隐藏?

ggazkfy8

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到特定的持续时间。

相关问题