为什么要使用路由
在之前我们的代码中,页面跳转使用的代码如下所示:
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => LoginPage()),
);
在开发过程中,随着页面的增加,如果继续使用这种方式会有如下缺陷:
- 代码耦合严重:涉及到页面跳转的地方就需要插入页面的构造函数,意味着需要知道其他页面的构建方式。
- 不易维护:一旦某个页面发生了变化,需要将涉及到该页面的跳转全部改变。
- 权限控制不方便:假设某些页面需要授权后才可以访问,需要在各个地方插入权限判断。
Flutter路由介绍
首先说一下,本篇的路由介绍是 Flutter 1.0的实现方式,Flutter 2.0对路由做了很大的改动,使用了声明式方式重构了路由,使用起来会更为复杂。在 Flutter 的 MaterialApp提供了路由配置参数,当使用路由配置后,MaterialApp 的构造形式如下所示:
return MaterialApp(
//其他参数...
navigatorKey: //全局导航状态Key,
onGenerateRoute: //路由改变响应方法,
initialRoute: //初始化路由路径,
);
navigatorKey
是一个GlobalKey<NavigatorState>
对象ÿ