前言
上一篇我们从源码角度分析了 setState
的过程,从而了解到为什么 setState
方法被调用的时候会重新构建整个 Widget
树。但是,Widget
树的重新构建并不意味着渲染元素树也需要重新构建,事实上渲染树只是做了更新,而不一定是移除后在渲染。
但是,我们的 ModelBinding
类也是使用了 setState
进行状态更新的,为什么它的子组件没有重新构建,而只是更新了依赖于状态的子组件的 build
方法呢?除了使用了内部的 InheritedWidget
包裹了子组件外,其他和普通的 StatefulWidget
没什么区别。如前面两篇分析 从InheritedWidget
了解状态管理一样,差别就是在这个 InheritedWidget
上。本着技术人刨根问底的精神,本篇就来看一下 InheritedWidget
在调用 setState
的时候究竟有什么不同。
知其然,知其所以然。在阅读本篇文章前,如果对 Flutter 的状态管理不是特别清楚的,建议阅读本人前几篇文章了解一下背景。
InheritedWidget与 StatefulWidget 的区别
首先,Inh