文章目录
- 1. 概念介绍
- 2. 使用方法
- 2.1 普通路由
- 2.2 命名路由
- 3. 示例代码
- 4. 内容总结
我们在上一章回中介绍了"使用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进行路由管理"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!