用户登录

打开练习,按一下查看内容,它会把 appModel 里的 pageName 设置成 About,但是这里并没有显示 About 这个页面。这是因为现在虽然应用的状态发生了变化,但是我们并没有通知路由器,这样它也就不会调用路由器代表里的 build 方法构建新的 Navigator。

appModel 这个对象是一个 ChangeNotifier,所以我们可以在它上面添加一个监听器,当这个对象发生变化的时候,可以去做一些事情,比如去通知 Router,应用的状态发生了改变。

在 AppRouterDelegate 的构造方法里面,我们可以用一下 appModel 上面的 addListener 添加一个监听器,提供一个 notifyListeners,这样当 appModel 这个对象发生变化的时候,就会执行这个 notifyListeners,路由器就会收到应用状态变化的通知,它就会调用这个路由器代表里的 build 构建一个新的 Navigator。

销毁这个对象的时候可以取消监听,添加一个 dispose 方法,在里面可以取消监听 appModel,用一下 appModel 上面的 removeListener,提供一个 notifyListeners。

下面在模拟器上测试一下,打开练习,按一下查看内容,会显示这个关于页面,再按一下返回又会回到上一次访问的页面。

按了这个按钮以后会修改 appModel 里的 pageName 的值,让它等于 About。应用的状态发生了变化会给路由器发送一个通知,路由器收到通知就会调用 RouterDelegate 里面的 build 方法构建 Navigator,因为 appModel 里的 pageName 的值是 About,所以在页面列表里最后一个页面就会是 About 这个页面,这样就会显示这个页面对应的小部件,也就是 About 这个小部件。

应用状态变化时通知 Router 重建 Navigator《 Flutter 2:路由导航 #2 》

统计

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

社会化网络

关于

微信订阅号

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