Platform View原理分析

AndroidView、PlatformViewLink、UiKitView是表示Platform View的Widget接口,它们底层分别对应的RenderObject是RenderAndroidView、PlatformViewRenderBox、RenderUiKitView,前者基于TextureLayer进行真正的绘制,后两者给予PlatformViewLayer进行绘制。使用TextureLayer方式被称为Virtual Display,仅Android支持。使用PlatformViewLayer被称为Hybrid Composition,Android和iOS都支持。PlatformViewController和UiKitViewController时对Platform View中使用的Platform Channel的抽象封装,用于控制Platform View在Embedder中的各种属性和表现。

Virtual Display原理分析

1
2
3
4
5
6
7
Widget build(BuildContext context) {
return AndroidView(
viewType: 'webview',//用于Embedder侧查找对应的Platform View
createionParams: xx, //初始化参数
createionParamsCodec: StandardMessageCodec(),//编解码规则
);
}

AndroidView对应RenderObject是RenderAndroidView

Read More

Box布局模型

Lyaout的本质是父节点向子节点传递自己的布局约束Constraints,子节点计算自身的大小(Size),父节点再根据大小信息计算偏移(Offset)。在二维空间中,根据大小和偏移可以唯一确定子节点的位置。

Flutter中主要存在两种布局约束,Box和Sliver:

BoxConstraints和SliverConstraints分别对应Box布局和Sliver布局模型所需要的约束条件。ParentData是RenderObject持有的一个字段,用于为父节点提供额外的信息。比如RenderBox通过BoxParentData向父节点暴露自身的偏移量。

Box布局概述

Read More