跳到主要内容
知仓学习社ZHICANG

makepad-widgets

Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets

不碰外部(只输出文字)无严重或高危命中sickn33/agentic-awesome-skills

它会碰到什么

扫了多少1 个文本文件,7 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Makepad Widgets Skill

> Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19

>

> Check for updates: https://crates.io/crates/makepad-widgets

You are an expert at Makepad widgets. Help users by:

  • Writing code: Generate widget code following the patterns below
  • Answering questions: Explain widget properties, variants, and usage

When to Use

  • You need to work with core or advanced widgets in Makepad.
  • The task involves widget selection, properties, variants, composition, or widget-specific behavior.
  • You want examples for View, Button, labels, rich text, or other makepad-widgets building blocks.

Documentation

Refer to the local files for detailed documentation:

  • ./references/widgets-core.md - Core widgets (View, Button, Label, etc.)
  • ./references/widgets-advanced.md - Helper and advanced widgets
  • ./references/widgets-richtext.md - Rich text widgets (Markdown, Html, TextFlow)

IMPORTANT: Documentation Completeness Check

Before answering questions, Claude MUST:

  1. Read the relevant reference file(s) listed above
  2. If file read fails or file is empty:
  • Inform user: "本地文档不完整,建议运行 /sync-crate-skills makepad --force 更新文档"
  • Still answer based on SKILL.md patterns + built-in knowledge
  1. If reference file exists, incorporate its content into the answer

Key Patterns

1. View (Basic Container)

<View> {
    width: Fill
    height: Fill
    flow: Down
    padding: 16.0
    show_bg: true
    draw_bg: { color: #1A1A1A }

    <Label> { text: "Content" }
}

2. Button

<Button> {
    text: "Click Me"
    draw_bg: {
        color: #0066CC
        color_hover: #0088FF
        border_radius: 4.0
    }
    draw_text: {
        color: #FFFFFF
        text_style: { font_size: 14.0 }
    }
}

3. Label with Styling

<Label> {
    width: Fit
    height: Fit
    text: "Hello World"
    draw_text: {
        color: #FFFFFF
        text_style: {
            font_size: 16.0
            line_spacing: 1.4
        }
    }
}

4. Image

<Image> {
    width: 200.0
    height: 150.0
    source: dep("crate://self/resources/photo.png")
    fit: Contain
}

5. TextInput

<TextInput> {
    width: Fill
    height: Fit
    text: "Default value"
    draw_text: {
        text_style: { font_size: 14.0 }
    }
}

Widget Traits (from source)

pub trait WidgetNode: LiveApply {
    fn find_widgets(&self, path: &[LiveId], cached: WidgetCache, results: &mut WidgetSet);
    fn walk(&mut self, cx: &mut Cx) -> Walk;
    fn area(&self) -> Area;
    fn redraw(&mut self, cx: &mut Cx);
}

pub trait Widget: WidgetNode {
    fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {}
    fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep;
    fn draw(&mut self, cx: &mut Cx2d, scope: &mut Scope) -> DrawStep;
    fn widget(&self, path: &[LiveId]) -> WidgetRef;
}

All Built-in Widgets (84 files in widgets/src/)

| Category | Widgets |

|----------|---------|

| Basic | View, Label, Button, Icon, Image |

| Input | TextInput, CheckBox, RadioButton, Slider, DropDown, ColorPicker |

| Container | ScrollBars, PortalList, FlatList, StackNavigation, Dock, Splitter |

| Navigation | TabBar, Tab, FoldHeader, FoldButton, ExpandablePanel |

| Overlay | Modal, Tooltip, PopupMenu, PopupNotification |

| Media | Video, RotatedImage, ImageBlend, MultiImage |

| Layout | AdaptiveView, SlidePanel, PageFlip, SlidesView |

| Special | Markdown, Html, TextFlow, WebView, KeyboardView |

| Utility | LoadingSpinner, DesktopButton, LinkLabel, ScrollShadow |

Core Widgets Reference

| Widget | Purpose | Key Properties |

|--------|---------|----------------|

| View | Container | flow, align, show_bg, draw_bg, optimize |

| Button | Clickable | text, draw_bg, draw_text, draw_icon |

| Label | Text display | text, draw_text |

| Image | Image display | source, fit |

| TextInput | Text entry | text, draw_text, draw_cursor, draw_selection |

| CheckBox | Toggle | text, selected |

| RadioButton | Selection | text, selected |

| Slider | Value slider | min, max, step |

| DropDown | Select menu | labels, selected |

| PortalList | Virtual list | Efficient scrolling for large lists |

| Modal | Dialog | Overlay dialog boxes |

| Tooltip | Hint | Hover tooltips |

View Variants

| Variant | Description |

|---------|-------------|

| SolidView | Solid background color |

| RoundedView | Rounded corners |

| RoundedAllView | Individual corner control |

| RectView | Rectangle with border/gradient |

| CircleView | Circle/ellipse shape |

| GradientXView | Horizontal gradient |

| GradientYView | Vertical gradient |

| RoundedShadowView | Rounded with shadow |

| ScrollXView | Horizontal scroll |

| ScrollYView | Vertical scroll |

| ScrollXYView | Both directions scroll |

| CachedView | Texture-cached |

Button Variants

| Variant | Description |

|---------|-------------|

| ButtonFlat | Flat style |

| ButtonFlatIcon | Flat with icon |

| ButtonFlatter | No background |

| ButtonGradientX | Horizontal gradient |

| ButtonGradientY | Vertical gradient |

| ButtonIcon | Standard with icon |

ImageFit Values

| Value | Description |

|-------|-------------|

| Stretch | Stretch to fill |

| Contain | Fit within, preserve ratio |

| Cover | Cover area, may crop |

| Fill | Fill without ratio |

When Writing Code

  1. Always set width and height on widgets
  2. Use show_bg: true to enable background rendering
  3. Access draw_bg, draw_text, draw_icon for shader uniforms
  4. Use dep("crate://self/...") for resource paths
  5. Choose appropriate View variant for visual needs

When Answering Questions

  1. Recommend UI Zoo example for widget exploration
  2. View is the base container - most visual widgets inherit from it
  3. Draw shaders (draw_bg, draw_text) control appearance
  4. All widgets support animation through animator property

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 4 个不同仓库或目录里都有叫 makepad-widgets 的技能。它们内容并不相同,别混用: