简单总结
以我的认知:
- 不要重写 didUpdateWidget
- 你需要重写,是否是你设计有问题
- 你确定要重写,且设计没问题。评论下大佬,我也学下这种case。
总结:
- 不要依赖于 didUpdateWidget 去发起UI状态变更,因为它的发起是不可控的。
- 也就是不要重写,如果有必须重写的case 我们可以讨论下
- 状态的变更,应该依赖于 明确的指令
- 主动调用 ViewModel的notification
- Data驱动UI状态改变:
- 在ViewModel中设置相应数据(开关、字符串…),
- 先改变数据,然后notify
- Widget被标记,下个周期就会build。在build方法中读取 ViewModel中的数值.
- 如果你重写了 didUpdateWidget 去改变UI状态,那就应该保证 它在任意时间、频率 去调用,都没问题。
原因:
- 父Widget调用 setState, 就会引起子Widget的 didUpdateWidget 被调用。
- 首先父widget,不关心子Widget didUpdateWidget 里干了什么,所以他可以随意更新,导致didUpdateWidget被任意 时间、频率 调用。
- 即便你知道了 父Widget 什么时候调用,那父Widget的父Widget呢?父父父Widget呢?
- didUpdateWidget 之后 会调用build方法,所以如果你Widget传参变更了,他就会变更状态。
那什么时候该用呢
- 嗯说是换监听的时候用,但我没实际遇到 这种case,就先不写了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)