Flutter 导航到其他屏幕时如何使用PageTransitionsBuilder?
我的理解是,我只能在主题内设置PageTransitionsBuilder,有没有办法在Navigator内使用它Flutter 导航到其他屏幕时如何使用PageTransitionsBuilder?,flutter,Flutter,我的理解是,我只能在主题内设置PageTransitionsBuilder,有没有办法在Navigator内使用它 您可以根据需要在应用程序中更改毫秒时间。最简单的解决方案是自定义PageRouteBuilder: 您说您想导航到另一个屏幕并面临问题,您还添加了错误转换builder:builder,//error。如果您能仔细阅读问题,请解释我在这里错过的内容,我不是要RouteTransitionsBuilder,而是PageTransitionsBuilder。两者之间有区别。我想在Nav
您可以根据需要在应用程序中更改毫秒时间。最简单的解决方案是自定义PageRouteBuilder:
您说您想导航到另一个屏幕并面临问题,您还添加了错误转换builder:builder,//error。如果您能仔细阅读问题,请解释我在这里错过的内容,我不是要RouteTransitionsBuilder,而是PageTransitionsBuilder。两者之间有区别。我想在Navigator中使用PageTransitionsBuilder,如果可能的话?。您可能想看看帖子上@pskink的评论。PageTransitionsBuilder仅由PageTransitionsTheme使用,如果您想在PageRouteBuilder中使用它,您需要编写一些小的生成器wrapper@pskink明白了,先生,你能分享一些链接或文档吗,在哪里我可以找到如何包装它?transitionsBuilder:ctx,a1,a2,child=>builder.buildTransitionsroute,ctx,a1,a2,child这只是一个解决方法-相反,你应该编写一个扩展PageRouteBuilder或PageRoute或ModalRoute的类-无论如何,请随意编写一个自我回答-@是的,我知道那些扩展PageRoute、PageRouteBuilder甚至ModalRoute的方法,但是那样的话我必须自己提供动画,但是这次我想使用团队提供的内置动画,所以我想使用其中的一种。我刚刚注意到一件事,我需要提供一个到构造函数的路由,因此在一天结束时,我需要一个扩展PageRoute和前面提到的其他类的类,似乎没有办法做到这一点。
final builder = OpenUpwardsPageTransitionsBuilder();
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (_, __, ___) => Page2(),
transitionsBuilder: builder, // error
),
);
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (ctx, a1, a2) => Screen2(),
transitionsBuilder: (ctx, anim, a2, child) => FadeTransition(opacity: anim, child: child),
transitionDuration: Duration(milliseconds: 3000),
),
);
class MyPageRouteBuilder<T> extends PageRouteBuilder<T> {
final PageTransitionsBuilder pageTransitionsBuilder;
MyPageRouteBuilder({
@required RoutePageBuilder pageBuilder,
@required this.pageTransitionsBuilder,
}) : assert(pageTransitionsBuilder != null), super(pageBuilder: pageBuilder);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
return pageTransitionsBuilder.buildTransitions(this, context, animation, secondaryAnimation, child);
}
}
Navigator.of(context).push(
MyPageRouteBuilder(
pageBuilder: (ctx, a1, a2) => Page2(),
pageTransitionsBuilder: OpenUpwardsPageTransitionsBuilder(),
)
);