Flutter:将命名路由与自定义页面路由构建器一起使用?

Posted

技术标签:

【中文标题】Flutter:将命名路由与自定义页面路由构建器一起使用?【英文标题】:Flutter: use named routes with custom page route builder? 【发布时间】:2021-09-02 12:16:07 【问题描述】:

目前在我的颤振项目中,我在这样的屏幕之间导航:

Navigator.push(
   context,
   CustomPageRouteBuilder().getPageRouteBuilder(MainPage()),
);

CustomPageRouteBuilder:

class CustomPageRouteBuilder 
  getPageRouteBuilder(Widget widget) 
    return PageRouteBuilder(
        transitionDuration: Duration(
          milliseconds: 500,
        ),
        transitionsBuilder: (BuildContext context, Animation<double> animation,
            Animation<double> secAnimation, Widget child) 
          animation = CurvedAnimation(
            parent: animation,
            curve: Curves.elasticInOut,
          );
          return ScaleTransition(
            alignment: Alignment.center,
            scale: animation,
            child: child,
          );
        ,
        pageBuilder: (BuildContext context, Animation<double> animation,
            Animation<double> secAnimation) 
          return LayoutPage(widget);
        );
  

我如何使用命名路由 + 这个CustomPageRouteBuilder

如果我有这些:

class Routes 
  static const String loginPage = "/loginPage";
  static const String mainPage = "/mainPage";

通常看起来像这样:

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
        title: 'Flutter Demo',
        home: LoginPage(),
        routes: 
          Routes.loginPage: (context) => LoginPage(),
          Routes.mainPage: (context) => MainPage(),
        ,
      );
  

但我想将LoginPage()MainPage() 包装在CustomPageRouteBuilder 中。

提前致谢。

【问题讨论】:

【参考方案1】:

使用GetX,它有一个非常简单的路线导航,如下所示:

Get.toNamed(YOUR_NAMED_ROUTE),

【讨论】:

这如何帮助我使用我创建的页面路由构建器方法?

以上是关于Flutter:将命名路由与自定义页面路由构建器一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter学习三 命名路由

普通路由普通路由传值 命名路由命名路由传值

Flutter 知识点总结-基础篇

002 flutter的路由管理--命名路由

使用颤振将多个参数传递给命名路由

Flutter 中的命名路由如何消除重复?