请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

当执行jump操作时,无法接收到页面变化通知

图片描述

图片描述

在RouteDelegate中发送页面改变的通知 "HiNavigator.getInstance().notify(tempPages, pages)"
新的界面initState中注册了listener,但是,发送通知的时候页面还没有执行initState方法,所以当前listeners中并没有相应的listener,因此 收不到通知,作者没有出现这个问题吗?

正在回答 回答被采纳积分+3

插入代码

1回答

CrazyCodeBoy 2021-07-28 09:09:21

通知如果发生在listener注册之前是收不到通知的,这个是正常逻辑,页面变化监听通常用在已打开的页面中监听其它页面的打开和关闭。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕神8017282 #1
    是诶,之前确实思维进死胡同了,感谢作者的回复。
    在此还有一个问题想问一下:
    就是在push到下一个页面后,会生成一个新的pages,我debug发现,之前的页面page也会被重新build,这个能避免吗?我看Flutter Performance显示很多widget被重新build,对性能影响大吗
    回复 有任何疑惑可以回复我~ 2021-07-28 10:45:28
  • CrazyCodeBoy 回复 提问者 慕神8017282 #2
    性能影响不大,如果不想重建已经打开的页面可以这样修改路由栈的生成。
    回复 有任何疑惑可以回复我~ 2021-07-29 09:03:43
  • 提问者 慕神8017282 回复 CrazyCodeBoy #3
    感谢作者的回复,这两天在研究Navigator2,发现一个纠结的问题,虽然页面已经可以使用Navigator2进行跳转了,但是发现Flutter提供的一些跳转方式,如showCupertinoModalPopup,这种跳转方式依然采用的是Navigator1的跳转方式,跟项目当前使用的Navigator2是不同的路由管理,这个有什么办法解决吗? 还是说用了Navigator2,就要摒弃Navigator1的所有跳转方式。
    回复 有任何疑惑可以回复我~ 2021-07-30 14:07:11
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号