通过Flutter BuildOwner之dirty elements简析一文,我们知道BuildOwner里面又两个集合:一个是drity elements集合,主要负责对dirty状态的Element进行重新构建,主要是调用了element.rebuild()方法。另外一个集合就是本文的主角inactive Elements。inactive意思是不活动的,无效的。在Element中通过mount方法进行widget tree或者element tree的挂载,unmount方法进行想法将element从element tree中剥离。所以可以推测出 inactive Elements的作用就是将element tree中无效的element对象进行unmount操作。至于这个结论是否正确,咱们下面具体分析。
无效Element的添加时机。什么样的Element才是无效的,又是什么时候将无效的Element添加到_inactiveElements集合中去呢?回答这个问题之前先来看看下面这段代码:
class BuildOwner {
final _InactiveElements _inactiveElements =