SuperAPI AI 工具集

gpui-element

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

用途:该技能面向 GPUI 框架,讲解如何用底层 Element trait 实现自定义元素,而非使用高层 Render/RenderOnce API。适合需要细粒度控制布局计算、构建性能敏感的复杂组件、实现自定义布局算法(如瀑布流、环形布局),或高层 API 能力不足的情况;简单组件、标准布局和声明式 UI 仍建议优先使用 Render/RenderOnce。

主要能力:Element trait 将渲染拆为三个阶段。request_layout 计算尺寸与位置,返回 LayoutId 与 RequestLayoutState;prepaint 创建命中区域(hitbox)、计算最终边界并准备绘制,返回 PrepaintState;paint 渲染视觉内容并设置鼠标事件、光标样式等交互。状态通过关联类型单向流动:RequestLayoutState → PrepaintState → paint,各阶段以可变引用传递。常用操作包括 window.request_layout(style, children, cx) 创建布局节点、window.insert_hitbox(bounds, behavior) 创建交互区域、window.paint_quad(...) 绘制内容、window.on_mouse_event(handler) 处理输入。实现 IntoElement 后该元素可作为子元素使用。

使用方式:按资料中的示例实现 Element 的 id、source_location、request_layout、prepaint、paint 方法,并实现 IntoElement。参考文档包含 api-reference.md(关联类型、方法、参数、返回值、hitbox、事件、光标样式)、examples.md(文本高亮、可交互选择、含子元素管理的复杂元素)、best-practices.md(状态管理、性能优化、交互处理、布局策略、错误处理、测试与常见陷阱)、patterns.md(文本渲染、容器、交互、复合、可滚动模式及选择指南)、advanced-patterns.md(自定义布局算法、trait 组合、异步更新、记忆化、虚拟列表)。

限制:资料未提供安装命令、版本要求、平台支持、收费或性能数据,暂未提供。具体 API 签名与完整示例需查阅上述参考文档。