我怎么做推更换使用去路由器插件在flutter [去路由器]

06odsfpq  于 2022-11-25  发布在  Flutter
关注(0)|答案(5)|浏览(188)

我正在使用go router插件为我的flutter web应用程序,但我没有找到任何方法在导航中进行推送替换。
我们不仅可以推送替换,还可以做其他类型导航链接

  • 推送已命名并删除直到
  • popUntil因为这些导航选项必须需要在任何系统的种类!

"我的努力"

  • (用户存储.重定向URL!);
  • (上下文)。go(页面集合。管理面板);

他们只是推下一页,而不是替换

注意:我希望在go路由器中使用此功能

ldioqlga

ldioqlga1#

我以前也遇到过同样的问题。那么这种方法对我很有效。首先,你需要避免嵌套路线:

final GoRouter router = GoRouter(
  routes: <GoRoute>[
    GoRoute(
      path: '/',
      builder: (BuildContext context, GoRouterState state) =>
          const OnboardingScreen(),
    ),
    GoRoute(
      path: '/login',
      builder: (BuildContext context, GoRouterState state) => LoginScreen(),
    ),
    GoRoute(
      path: '/signup',
      builder: (BuildContext context, GoRouterState state) =>
          const SignupScreen(),
    ),
    
  ],
);

使用上面的代码,而不是像下面这样嵌套:

final GoRouter router = GoRouter(
  routes: <GoRoute>[
    GoRoute(
      routes: <GoRoute>[
        GoRoute(
          path: 'login',
          builder: (BuildContext context, GoRouterState state) => LoginScreen(),
        ),
        GoRoute(
          path: '/signup',
          builder: (BuildContext context, GoRouterState state) =>
              const SignupScreen(),
        ),
      ],
      path: '/',
      builder: (BuildContext context, GoRouterState state) =>
          const OnboardingScreen(),
    ),
  ],
);

这将使您能够从上面的例子替换OnboardingScreen()。所以接下来您可以使用pushreplacement future与:

context.go("/routname");

或GoRouter.of(上下文).go(“/路由名称”);如果你不想替换,那么可以用途:

context.push("/routname");

GoRouter.of(context).push("/routname");
00jrzges

00jrzges2#

试试这个

Router.neglect(context, () {
            context
                .goNamed('third', params: {"id": ID});
          });

它将忽略您当前的页面。希望这将帮助您

pgx2nnw8

pgx2nnw83#

你可以用一种方式-〉

context.pop();
context.push(routeName);

添加这两个命令的工作方式与pushReplacement类似。

kgqe7b3p

kgqe7b3p4#

您可以在Go Router中使用子路由重定向。
假设您希望用户首先进入您的主页,然后从那里点击“登录”,进入“登录”页面,登录后进入“ Jmeter 板”页面。
但是,当他们按下浏览器的后退按钮时,他们应该转到主页,而不是登录页面,即跳过登录页面,就像**“pushNameReplacement”**一样。
然后,为了实现此目的,您可以配置每个LoginPage和Dashboard页面的重定向并获得此功能。
您可以对其进行配置,以便每当用户(包括从浏览器的历史记录)转到 Jmeter 板链接时,它首先检查其是否已登录,然后打开,否则它将自动显示登录页面。

jvlzgdj9

jvlzgdj95#

go_router5.1.10)的当前版本中,可以使用GoRouter.of(context).replace('/your-route)执行与Navigator.of(context).pushReplacement(yourPage)相同的操作。
有一个PR可以添加popUntil,但flutter团队似乎不想支持命令式路由方法,而只关注声明式路由(请参见this issue)。
这意味着the popUntil PR可能永远不会被合并,并且pushNamedAndRemoveUntil永远不会被支持。这还意味着pushreplace将来可能会被删除。

相关问题