Flutter Getx 路由 until 方法帮助你跳转指定路由

简介: 不少同学都会问我,这样一个场景,当我点击商品列表,进入商品页,点击购买,支付成功后,想返回商品页,或者我的中心的订单列表。怎么做,这中间跨度了 n 个路由。我不只一次的推荐 GetX 的 until 方法,和 offNamedUntil 方法。我写了个 demo 今天我们就一起来看下这两个方法如何使用。

Flutter Getx 路由 until 方法帮助你跳转指定路由

原文 https://ducafecat.com/blog/getx-router-until

视频

https://www.bilibili.com/video/BV1eM4y1v7Yy/

前言

不少同学都会问我,这样一个场景,当我点击商品列表,进入商品页,点击购买,支付成功后,想返回商品页,或者我的中心的订单列表。怎么做,这中间跨度了 n 个路由。

我不只一次的推荐 GetX 的 until 方法,和 offNamedUntil 方法。

我写了个 demo 今天我们就一起来看下这两个方法如何使用。

知识点

Get.until

Get.until 是 GetX 库中一个用于导航的方法,它可以返回到指定路由,也可以返回到指定路由的前一个路由,可以在某些特定场景下使用。

具体来说,Get.until 方法的作用是返回到指定路由,其语法如下:

Get.until(predicate)

其中,predicate 是一个回调函数,用于指定返回到的路由。当 predicate 返回 true 时,停止返回操作。

以下是一个示例:

Get.until((route) => route.isFirst);

上面的代码将会返回到栈中第一个路由,即首页。

另外,如果需要返回到指定路由的前一个路由,可以使用 Get.until((route) => route.settings.name == '/second') 方法,其中 /second 是要返回到的路由名称。

需要注意的是,Get.until 方法只适用于返回路由,如果需要在当前路由之上添加一个新的路由,应该使用 Get.to 方法。

Get.offNamedUntil

Get.offNamedUntil 是 GetX 库中一个用于导航的方法,它可以将当前页面替换为新的页面,并且可以指定一个条件,当条件成立时停止替换。

具体来说,Get.offNamedUntil 方法的作用是将当前页面替换为指定的路由,并且可以指定一个条件,当条件成立时停止替换。它的语法如下:

Get.offNamedUntil(routeName, predicate)

其中,routeName 是要跳转到的路由名称,predicate 是一个回调函数,用于指定停止替换的条件。当 predicate 返回 true 时,替换操作停止。

以下是一个示例:

Get.offNamedUntil('/home', (route) => route.isFirst);

上面的代码将会将当前页面替换为 /home 路由,并且在路由栈中只保留一个页面,即首页。

这个方法适用于在某些特定的场景下,需要进行页面替换,并指定一个条件来控制替换的行为。比如在用户登录成功后,需要将当前页面替换为主页,但是需要保证登录页面不再路由栈中,可以使用 Get.offNamedUntil('/home', (route) => route.isFirst) 方法。

另外,需要注意的是,Get.offNamedUntil 方法只适用于替换路由,如果需要在当前路由之上添加一个新的路由,应该使用 Get.toNamed 方法。

代码步骤

页面关系

  • 程序启动进入 main
  • main 点击进入商品列表 product list
  • 点击商品列表进入详情页 product detail
  • 点击商品页进入订单确认支付页 order confirm
  • 支付成功进入 order done
    • 返回商品列表页
    • 返回用户首页

订单完成页

返回商品列表页

  void toProductList() {
   
   
    Get.until((route) => Get.currentRoute == RouteNames.productList);
  }

返回用户首页

  void toUserProfile() {
   
   
    Get.offNamedUntil(
      RouteNames.userProfile,
      (route) => route.isFirst,
    );
  }

代码

https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_application_getx_until

小结

总的来说,Get.offNamedUntilGet.until 这两个方法都是 GetX 库中用于导航的方法,它们可以在特定场景下用于页面的跳转和返回。以下是这两个方法的注意事项:

  • Get.offNamedUntil 方法只适用于替换路由,如果需要在当前路由之上添加一个新的路由,应该使用 Get.toNamed 方法。

  • Get.until 方法只适用于返回路由,如果需要在当前路由之上添加一个新的路由,应该使用 Get.to 方法。

另外,无论是使用 Get.offNamedUntil 还是 Get.until 方法,在编写 predicate 回调函数时,必须确保回调函数能够正确地返回 truefalse,否则导航操作可能会出现异常。同时,如果使用这两个方法进行页面跳转或返回时,还需要注意路由栈的变化,以确保页面的导航行为符合预期。

感谢阅读本文

如果我有什么错?请在评论中让我知道。我很乐意改进。


© 猫哥
ducafecat.com

end

相关文章
|
3月前
|
存储 设计模式 Dart
Flutter笔记:getX库中的GetView中间件
Flutter笔记:getX库中的GetView中间件
84 0
|
3月前
|
存储 Dart 数据库
Flutter笔记:状态提升、控制器模式、GetX控制器和服务
Flutter笔记:状态提升、控制器模式、GetX控制器和服务
100 0
|
6月前
|
Dart Android开发 UED
带你读《深入浅出Dart》二十七、Flutter路由管理
带你读《深入浅出Dart》二十七、Flutter路由管理
|
6月前
|
开发者
Flutter笔记:build方法、构建上下文BuildContext解析
本文主要介绍Flutter中的build方法和构建上下文对象。
189 2
Flutter笔记:build方法、构建上下文BuildContext解析
|
7月前
|
存储 数据库 索引
Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)
本文介绍Flutter中如何实无线滚动(基于GetX简单状态管理而非有状态组件)
71 0
|
3月前
|
安全 Go 数据安全/隐私保护
Flutter开发笔记:Flutter路由技术
Flutter开发笔记:Flutter路由技术
348 0
|
6月前
|
存储 设计模式 Dart
Flutter笔记:GetX模块中不使用 Get.put 怎么办
依赖注入(Dependency Injection,对于很多真的就是简单的局部共享状态的场景,自己实现单例我个人感觉反而更好。首先,你不需要集中于创建代码初期就从各个模块中导入你的各个控制器,也不需要预先在应用初始化时就创建它们的实例,从而将实例添加到GetX依赖中进行管理。这使得mian文件中的代码更加简洁。如果某个局部状态控制器被移除,你也不需要回到mian文件中来对代码进行改动,只需要删除不用的部分。其次,在Dart语言中,为面向对象的单例实现提供了很方便的支持,仅仅三个小步骤就可以实现严格管理单例。
90 1
|
3月前
|
BI
Flutter笔记:路由观察者
Flutter笔记:路由观察者
75 0
|
3月前
|
设计模式 JavaScript 开发者
Flutter笔记:聊一聊Flutter中委托的设计方法
Flutter笔记:聊一聊Flutter中委托的设计方法
83 0
|
4月前
|
UED
Flutter之自定义路由切换动画
Flutter之自定义路由切换动画 在Flutter中,我们可以通过Navigator来实现路由管理,包括路由的跳转和返回等。默认情况下,Flutter提供了一些简单的路由切换动画,但是有时候我们需要自定义一些特殊的动画效果来提高用户体验。本文将介绍如何在Flutter中实现自定义的路由切换动画。