SuperAPI AI 工具集

robius-widget-patterns

前端与建站

查看项目

更新于 10-16 04:41

技能介绍

用途

Robius Widget Patterns 是一份面向 Makepad 框架的组件设计实践指南,目标是为「如何设计可复用的 Makepad 组件」提供基于真实项目的参考模式。其模式来源为两个代码库:Robrix(Matrix 聊天客户端,包含 Avatar、RoomsList、RoomScreen 等组件)与 Moly(AI 聊天应用,包含 Slot、ChatLine、PromptInput、AdaptiveView 等组件)。

主要能力

该技能围绕 Makepad 组件的设计与实现,提供以下方面的模式与代码示例:

  • 标准组件结构:使用 live_design! 定义 DSL,配合 #[derive(Live, LiveHook, Widget)] 声明 Rust 结构体,区分 #[deref]、#[live]、#[rust]、#[animator] 等字段用途。
  • 文本/图片切换模式:以 Avatar 为例,通过 flow: Overlay 叠加视图,用 set_visible() 在文本视图与图片视图之间切换,并提供 show_text、show_image、status 等方法。
  • 动态样式:使用 apply_over 在运行时应用单个或多个属性,支持传入变量(如高亮颜色)。
  • 组件引用封装:为外部 API 实现 *Ref 方法(如 AvatarRef),内部通过 borrow_mut() 调用实际组件方法。
  • 折叠/展开模式:CollapsibleSection 通过 is_expanded 状态切换内容可见性,并旋转图标。
  • 加载状态模式:LoadableContent 以 LoadingState 枚举(Idle、Loading、Loaded、Error)驱动内容、加载遮罩与错误视图的显隐。
  • 虚拟列表模式:基于 PortalList 的条目模板与 set_item_range、next_visible_item 等接口填充列表项。

此外,资料还列出 _base/ 目录下的生产级模式清单,包括:组件扩展辅助方法、基于 DrawList2d 的模态浮层、可折叠区块、基于 LivePtr 模板的动态列表、LRU 视图缓存、带箭头定位的提示气泡、重绘优化、IDE 风格可调整面板、基于实例变量的悬停效果、基于行的动态网格布局、拖拽重排、PageFlip 切换优化、门户列表连续项自动分组、基于 DrawList2d 的下拉浮层等。

使用方式

该技能以代码示例与模式说明的形式提供,使用者在开发 Makepad 组件时按需参考对应模式。资料中给出的最佳实践包括:使用 #[deref] 委托内部 View 的标准行为;将 DSL 属性(#[live])与 Rust 状态(#[rust])分离;同时实现内部方法与 *Ref 包装;用 apply_over 做运行时动态样式;用 flow: Overlay 实现切换/替换模式;用 set_visible() 在备选视图间切换;状态变更后调用 redraw(cx)。

适用场景

适用于创建可复用 Makepad 组件、设计组件 API、实现文本/图片切换、Makepad 动态样式,以及模态、折叠、拖拽、下拉、悬停、列表等交互场景。触发关键词包括 apply_over、TextOrImage、modal、可复用、模态、collapsible、drag drop、reusable widget 等。

限制

资料明确说明:本目录副本包含内联指引,但不包含以下外部支撑文件,它们是外部前置条件而非随附文件:

  • <support-root>/references/widget-patterns.md
  • <support-root>/references/styling-patterns.md
  • <support-root>/references/moly-widget-patterns.md

在使用依赖这些路径的步骤前,需先获取原始支撑材料或已有安装;本目录未提供这些文件的已验证下载来源。路径应相对于该安装解析,检查其内容并核实适用的许可与执行前置条件。在所需文件存在之前,不应运行命令或声称已执行所引用的流程;不得伪造缺失脚本,也不得将同名无关文件视为等价。完全记录于此的独立步骤可在用户授权范围内进行;任何依赖缺失文件的步骤应报告为不可用。

此外,该技能仅应在任务明确匹配上述范围时使用;其输出不应替代针对具体环境的验证、测试或专家审查;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。