flutter-开发时出现的bug
·

事情是这样的:业务是 修改手机号 页面ChangePhonePage。 点击修改到 修改手机号输入页面ChangeInputPhonePage, 由于使用了go_router框架, 所以由ChangePhonePage push进入的ChangeInputPhonePage, 当在ChangeInputPhonePage输入完成后,使用pop回到ChangePhonePage页面并带上了新的手机号, 在ChangePhonePage的push.then的回调中接收传递过来的新手机号,调用setState刷新,发现没有调用build方法,手机号没更新为新设置的手机号。
经过排查,是由于我在didChangeDependencies()这个生命周期方法中写代码,主要是弹了个toast。经过大牛同事黄某的协助排查,最终说是didChangeDependencies这个方法不能在这里写这种弹框的代码会影响到刷新方法build,通过查找didChangeDependencies方法才知道,这里是当系统语言Locale或应用主题改变时,Flutter框架会通知widget调用此回调, 并且我在项目中使用的是
riverPod这个状态管理的框架,此组件继承的父类组件传递的依赖数据变化,也会导致didChangeDependencies调用,导致build方法不会调用,导致页面的手机号没有刷新。
总结:不要随便在页面中调用didChangeDependencies。会影响build的刷新。
更多推荐

所有评论(0)