小部件是 Flutter 布局系统的基础。Flutter 中几乎所有的东西都是一个小部件,包括布局模型。小部件是您在 Flutter 应用程序中看到的图像、图标和文本。您看不到的东西,例如排列、约束和对齐可见小部件的行、列和网格,也是小部件。
RenderObject类是渲染库的核心,它处理可视元素树并指定布局、绘画和堆肥过程。RenderObject 没有任何特定的布局协议,也没有定义子模型。RenderObject 类的实现者(如RenderBox、RenderSliver、RenderAbstractViewport和RenderView)引入了布局系统和子模型。
大多数 RenderObject 是 RenderBox。
RenderBox有它的笛卡尔坐标系和盒子约束,这些约束决定了它的孩子的高度和宽度的最小值和最大值。然后使用这些值来找出孩子的大小。
RenderBox 的常见例子有 Container、SizedBox 等。它们遵循 RenderBox 协议,基于笛卡尔空间和盒子约束来描述和绘制布局模型。
虽然RenderBox非常适合在笛卡尔坐标中渲染对象,但它们不适合滚动小部件。对于滚动,有 Sliver 协议。在视口中实现滚动效果的渲染对象使用RenderSliver作为它们的基类。
Sliver是视口内容的一部分,用于覆盖视口。Sliver 参与 Sliver 协议。