用户登录

路由信息有变化,路由器会把它转换成路由信息数据,然后交给路由信息解析器里的这个 parseRouteInformation 处理,这个方法会把路由信息转换成路由配置,比如这里我们设置的是,如果访问的是 /about 这个地址,提供的路由配置数据,它里面的 pageName 的值就会是 About。

接着路由器会把这个路由配置数据交给路由器代理里面的 setNewRoutePath 这个方法使用,打开 app_router_delegate,找到这里的这个 setNewRoutePath 方法,方法的 configuration 参数的值就是 parseRouteInformation  方法根据路由信息提供的路由配置数据。在我这里它应该是一个 AppRouteConfiguration 类型的数据。

在这个方法里可以在控制台上再输出这个 configuration 里的 pageName 的值观察一下。在浏览器,访问一下 about 这个地址,然后观察一下控制台上输出的东西,你会发现在 setNewRoutePath 方法里输出的 configuration 里的 pageName 的值会是 About。

在这个 setNewRoutePath 方法里,根据 configuration 的值,可以修改应用的状态,状态发生变化,路由器就会调用这里的 build 方法重建 Navigator。

判断一下如果 configuration.isHomePage 这个 getter 提供的值是 true ,我们可以用一下 appModel.setPageName,把 appModel 里的 pageName 的值设置成一个空白的字符。 下面再判断一下,如果 configuration.isAboutPage 提供的值是 true,执行一下 appModel.setPageName,把 appModel 里的 pageName 的值设置成  About。

测试

在浏览器再测试一下,访问一下 about 这个地址,现在显示的就是 About 这个页面。操作系统或平台的路由信息发生了变化,路由器会把它转换成路由信息数据,交给它的 RouteInformationParser 里的 parseRouteInformation 方法处理,这个方法会根据这个路由信息数据,提供对应的路由配置。路由器又会把这个路由配置交给 RouterDelegate 里的 setNewRoutePath 方法使用,在这个方法里要根据路由配置数据的值来修改应用的状态。

应用的状态发生变化会通知路由器,路由器收到了通知就会调用 RouterDelegate 里的 build 方法重建 Navigator。

根据路由配置数据修改应用状态(setNewRoutePath)《 Flutter 2:路由导航 #2 》

统计

13799
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点