1分钟
08 自定义流程
上述主要描述了 MultiChildRenderObjectWidget 、 MultiChildRenderObjectElement 和其他三个辅助类ContainerRenderObjectMixin 、 RenderBoxContainerDefaultsMixin 和 ContainerBoxParentData 之间的关系。
了解几个关键类之后,我们看一般情况下,实现自定义布局的简化流程是:
- 1、自定义
ParentData继承ContainerBoxParentData。 - 2、继承
RenderBox,同时混入ContainerRenderObjectMixin和RenderBoxContainerDefaultsMixin实现自定义RenderObject。 - 3、继承
MultiChildRenderObjectWidget,实现createRenderObject和updateRenderObject方法,关联我们自定义的RenderBox。 - 4、override
RenderBox的performLayout和setupParentData方法,实现自定义布局。
当然我们可以利用官方的 CustomMultiChildLayout 实现自定义布局,这个后面也会讲到,现在让我们先从基础开始, 而上述流程中混入的 ContainerRenderObjectMixin 和 RenderBoxContainerDefaultsMixin ,在 RenderFlex 、RenderWrap 、RenderStack 等官方实现的布局里,也都会混入它们。
学员评价