修复一个陈年BUG

其实业务本身没有这么复杂,使用flutter加载admob广告,后面由于加载很费时间,索性就加上了广告缓存,使用一个preload的Map保存已经预加载完成的广告,但是从上线以来,一直会报一个错误。

This AdWidget is already in the Widget tree

因为报错不规律,又是个小问题,不影响整体页面的展示,索性就一直拖着没去处理它,直接昨天,我终于发现在问题的所在。

当一页加载完成后,上拉会触发上拉加载,在加载新页的时候会反复出现那个错误,于是我就开始检查代码,代码逻辑是没问题的,后来发现,在上拉加载的时候整个页面重新绘制了,所以就会重新加载之前的广告数据,所以就报错了。

If you placed this AdWidget in a list, make sure you create a new instance in the builder function with a unique ad object.Make sure you are not using the same ad object in more than one AdWidget.

最后解决办法是,记录最后一次加载广告的hashCode,当重新绘制页面时,如果出现跟上次一样的hashCode,就直接更新广告,完美解决问题,上线大半年,最大的一个BUG,终于给消灭了😁。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注