用途:在 Compose DSL 页面中嵌入 Kuikly DSL 组件,并可在 Compose 中调用 Kuikly Module。仅支持 Compose 混用 Kuikly 这一方向,不支持在 Kuikly DSL 中反向混用 Compose DSL。
页面搭建:Compose 页面继承 ComposeContainer(即 Pager),在 willInit() 中调用 setContent {}。ComposeContainer 继承 Kuikly Core 的 Pager,具备跨端页面生命周期 willInit / created / pageDidAppear / pageDidDisappear / pageWillDestroy。
主要能力:MakeKuiklyComposeNode 是桥接入口,把 Kuikly DSL 组件嵌入 Compose 渲染树,提供两个重载。原子组件(无子节点)适用于 DeclarativeBaseView 子类,如 Video、地图等自渲染组件;容器组件(有子节点)适用于 ViewContainer 子类,可挂载 Compose 子节点。两者均支持 viewInit(创建时调用一次)与 viewUpdate(每次重组时调用),并可传入 measurePolicy。
用法要点:封装时按场景选择基类——原子组件用 DeclarativeBaseView,容器组件用 ViewContainer,禁止把 ComposeView 子类传入 factory,因其扁平化优化会导致布局 frame 丢失、视图不可见。随 Compose 状态变化的属性和事件回调必须在 viewUpdate 中同步设置,否则重组后不更新。在 Compose 中使用 Kuikly Module 时,通过 LocalActivity.current.getPager() 获取 Pager,再调用 acquireModule;acquireModule 找不到时抛异常,getModule 找不到时返回 null。
详细参考文档:COMPONENT_WRAPPING.md(组件封装详解、viewInit 与 viewUpdate 差异、错误排查)、MODULE_USAGE.md(Router / Notify / SP / PageData / 自定义 Module)。