1 路由管理

路由的概念由来已久,包括网络路由、后端路由,到现在广为流行的前端路由。
无论路由的概念如何应用,它的核心是一个路由映射表
比如:名字 detail 映射到 DetailPage 页面等
有了这个映射表之后,我们就可以方便的根据名字来完成路由的转发(在前端表现出来的就是页面跳转)
在Flutter中,路由管理主要有两个类:Route和Navigator

(1) Route

Route:一个页面要想被路由统一管理,必须包装为一个Route

(2) Navigator

Navigator:管理所有的Route的Widget,通过一个Stack来进行管理的
我们开发中使用的MaterialApp、CupertinoApp、WidgetsApp它们默认是有插入Navigator的

2 两页面间跳转

  1. class MainPage extends StatelessWidget {
  2. const MainPage({Key? key}) : super(key: key);
  3. @override
  4. Widget build(BuildContext context) {
  5. return Center(
  6. child: ElevatedButton(
  7. child: Text("打开详情页面"),
  8. onPressed: () {
  9. Navigator.of(context).push(MaterialPageRoute(builder: (ctx) {
  10. return DetailedPage();
  11. }));
  12. }));
  13. }
  14. }
  15. class DetailedPage extends StatelessWidget {
  16. const DetailedPage({Key? key}) : super(key: key);
  17. @override
  18. Widget build(BuildContext context) {
  19. return Center(
  20. child: ElevatedButton(
  21. child: Text("回到主页"),
  22. onPressed: () {
  23. Navigator.of(context).push(MaterialPageRoute(builder: (ctx) {
  24. return MainPage();
  25. }));
  26. },
  27. ),
  28. );
  29. }
  30. }

3 路由表