第五百零一回


我们在上一章回中介绍了"使用get显示Dialog"相关的内容,本章回中将介绍使用get进行路由管理.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的路由管理主要是指页面之间的跳转,该功能是Get包的主要功能之一,不过原生SDK中也提供了该功能。我们在前面章回中介绍Get包时提到过路
由管理功能,本章回中将详细介绍该功能的用法,同时也会和原生SDK中的功能做比较。

2. 使用方法

我们在本章回中介绍的路由管理功能主要包含普通路由管理和命名路由管理两个功能。我们将分不同的小节来介绍它们。

2.1 普通路由

我们在这里说的普通路由是指在路由中直接使用页面类对象,比如下面的代码中直接使用了YourPage这个对象,它代表项目中的某个页面。

 Get.to(const YourPage());
 Navigator.of(context).push(MaterialPageRoute(builder: (context) => const YourPage()));

原生SDK中通过Navigator类来实现路由管理,该类提供了push,pop,push,pushReplacement等方法来实现路由跳转功能。Get包对此类进行了封装,它提供了相
关的方法来实现路由跳转功能,包中常用的方法如下:

  • to():用来从当前页面跳转到参数是指定的页面,与原生中的push方法功能相同;
  • back():用来从当前页面返回到上一级页面,与原生中的pop方法功能相同;
  • off():用来从当前页面跳转到参数是指定的页面,并且取消下一个页面的导航(返回箭头),与原生中的pushReplacement方法功能相同;
  • offAll():用来从当前页面跳转到参数指定的页面,并且删除所的有路由,与原生中的pushAndRemoveUntil方法功能相同;
    上面介绍的这些方法使用十分方便,主要体现在两个方面:通过包名就可以直接调用;只需要在参数中传入跳转的页面就可以,不需要BuildContext对象;

2.2 命名路由

命名路由就是给页面起一个别名,在页面跳转时通过别名来跳转到指定的页面。它的用法详细如下:

  • 给页面创建别名,并且把别名赋值给GetMaterialApp组件的getPages属性;
  • 在GetMaterialApp组件的initialRoute属性中指定根路由;
  • 使用包中的toNamed方法跳转到指定页面,该方法的的参数是页面的别名;
    掌握上面介绍的使用步骤就可以调用包中的方法来使用命名路由,下面是包中提供的相关方法:
  • toNamed():用来从当前页面跳转到参数是指定的页面,与原生中的push方法功能相同;
  • offNamed():用来从当前页面跳转到参数是指定的页面,并且取消下一个页面的导航(返回箭头),与原生中的pushReplacement方法功能相同;
  • offAllNamed():用来从当前页面跳转到参数指定的页面,并且删除所的有路由,与原生中的pushAndRemoveUntil方法功能相同;
    上面介绍的这些方法使用十分方便,主要体现在两个方面:通过包名就可以直接调用;只需要在参数中传入跳转的页面就可以,不需要BuildContext对象;此外,包中
    还提供了其它的命名路由方法,大家可以去查看接口相关的代码。

3. 示例代码

GetMaterialApp(
  // home: GetHomePage(),
  ///配置好路由后可以使用命名路由,配置方法和Material方法相同
  initialRoute: '/',
  getPages: [
    GetPage(name: '/', page: () => const GetHomePage(),),
    GetPage(name: '/overlay', page: () => const ExOverlayEntry(),),
    GetPage(name: '/html', page: () => const ExHtmlView(),),
  ],
);

ElevatedButton(
  onPressed: (){
    Get.toNamed('/html');
    // Navigator.of(context).pushNamed('/html');
  },
  child: const Text("Named"),),

上面的示例代码完全按照上一小节中的实现方法来编写,同时把包中路由方法赋值给了按钮的onPressed属性,这样在点击按钮时就可以跳转到其它的页面。这里只演示
了一种命名路由方法,其它的方法用法相同,大家可以自己动手去实践。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • Get提供了两种方法管理路由:普通路由和命名路由;
  • 普通路由通过to,back,off()等方法来实现路由管理;
  • 命名路由通过toNamed,offNamed(),offAllNamed()等方法来实现路由管理;
  • Get包中进行路由管理的方法都是静态方法,并且不需要提供Context对象,使用十分方便;
    看官们,与"使用get进行路由管理"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
  • 43
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值