产品名称:朱亚宁----测试1
品牌:
货号:
价格:询价
联系人:
电话:

1、为什么需要局部刷新

如下图场景:在一个Navigator的某Router上有个Scffold页面,页面上并列三个StatefulWidget,分别是A、B、C。

此时此页面对应的Tree应为右图所示。

问题:当A节点上显示的某文本需要变化,怎么操作,才是zui好的选择呢?

回答:这种场景很多,将A节点的文案对象放入State属性中,修改为新的文本,调用setStates()方法即可。那么怎么才是更高效的需要理解setStates()方法做了哪些。

image.png

2、setStates()做了什么呢?

简单的说就是将setStates的Widget对象对应的Element对象标记为dirty(脏的,意思是需要刷新的),并将其存储到了一个quan局的链表中。然后就是等待,等待什么呢?等待系统下一帧的Vsync通知,当系统告知我们下一帧可以显示了,widgetBinding就会找到这个存放着需要刷新element的链表重新绘制。