首先放上一张咸鱼技术的图

第一列是我们开发中常用的
一个
StatefulWidget 通过build函数返回一个根View为Row的Widget,这样写有时候我觉得很奇怪,一个Widget类内部方法build又返回了Widget对象。
根据Widget的
Describes the configuration for an [Element]
Widgets are the central class hierarchy in the Flutter framework. A widget is an immutable description of part of a user interface. Widgets can be inflated into elements, which manage the underlying render tree.
描述这个类相当于一个Element的配置类,是Flutter框架的核心类,Widget可以生成Elements,Elements管理渲染树,也就说不是实际的渲染对象。
这个时候就有个问题 Widget都会对应一个Element这个没问题,那一个Element都会对应一个RenderObject吗?
答案是不是的?StatefulWidget和StatelessWidget本身的Element不会有与之对应的RenderObject,他们对应的是ComponentElement .
看下ComponentElement的描述。
Rather than creating a [RenderObject] directly, a [ComponentElement] creates [RenderObject]s indirectly by creating other [Element]s. 这个类是通过其他Widget来创建RenderObject的。
所以咸鱼技术最后一列的图上就没有了StatefulWidget的身影。当时看这个图有点奇怪,所以自己摸索一下,有错误的地方请大佬们指出来。