首先放上一张咸鱼技术的图
第一列是我们开发中常用的
一个
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的身影。当时看这个图有点奇怪,所以自己摸索一下,有错误的地方请大佬们指出来。