一、几乎所有布局源自他们三
其实如果这是为了快速上手,直接忽略这些即可
是的。Flutter有很多布局组件。
有的布局组件下,可以有多个子组件,有的只能有是一个子组件,有的是一个也没有。
但是,几乎所有布局组件,都继承自3个ObjectWidget。
分别是:
LeafRenderObjectWidget没有任何子组件SingleChildRenderObjectWidget仅有一个 子组件MultiChildRenderObjectWidget允许有多个子组件
注意:我们这里是大多数布局组件继承这三个,而不是说所有widget,也不是说所有组件
| 基类组件 | 描述 | 子组件支持 |
|---|---|---|
LeafRenderObjectWidget | 用于创建只有一个渲染对象的非容器类组件基类。通过重写 createRenderObject 方法,创建自定义的渲染对象,并将其添加到渲染树中。 | 不支持子组件 |
SingleChildRenderObjectWidget | 用于创建只有一个子渲染对象的容器类组件基类。通过重写 createRenderObject 方法创建自定义的渲染对象,并将子组件传递给渲染对象。 | 支持一个子组件 |
MultiChildRenderObjectWidget | 用于创建具有多个子渲染对象的容器类组件基类。通过重写 createRenderObject 方法创建自定义的渲染对象,并使用 visitChildren 方法访问子组件。 | 支持多个子组件 |
什么什么?模糊?
来例子呗 以下是一些常见的 Flutter 组件以及它们的继承关系:
-
Container组件:- 继承自:
StatelessWidget
- 继承自:
-
Row组件:- 继承自:
Flex Flex继承自:FlexParentDataWidget<FlexParentData>FlexParentDataWidget继承自:ParentDataWidget<ParentData>
- 继承自:
-
Column组件:- 继承自:
Flex Flex继承自:FlexParentDataWidget<FlexParentData>FlexParentDataWidget继承自:ParentDataWidget<ParentData>
- 继承自:
-
Stack组件:- 继承自:
MultiChildRenderObjectWidget
- 继承自:
-
Expanded组件:- 继承自:
ParentDataWidget<MultiChildLayoutParentData>
- 继承自:
-
SizedBox组件:- 继承自:
SingleChildRenderObjectWidget
- 继承自:
-
SingleChildScrollView组件:- 继承自:
SingleChildRenderObjectWidget
- 继承自:
-
ListView组件:- 继承自:
BoxScrollView BoxScrollView继承自:ScrollViewScrollView继承自:SingleChildRenderObjectWidget
- 继承自:
-
GridView组件:- 继承自:
BoxScrollView BoxScrollView继承自:ScrollViewScrollView继承自:SingleChildRenderObjectWidget
- 继承自:
够不够了然?
好的。
过,