makepad-2-0-events
Ajuda seu agente a lidar com eventos no Makepad 2.0. É importante ao criar ou corrigir o código da interface do usuário (UI) feito com Makepad.
O que ela faz
Este guia explica como o Makepad 2.0 lida com interações do usuário, como cliques e digitação. Ele mostra como conectar essas ações a funções no código para que o programa reaja corretamente.
Quando usar
- ✓Quando você quiser que um botão execute uma ação.
- ✓Quando precisar que o programa reaja ao pressionar Enter em um campo de texto.
- ✓Ao criar listas de itens que podem ser atualizadas ou removidas.
Exemplo do que pedir para a IA
“Como faço para que um botão salve as informações de um campo de texto?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O Makepad usa dois 'lugares' para lidar com eventos: um direto no código visual (Splash) e outro mais complexo em Rust. O código visual é mais simples para ações diretas, enquanto Rust cuida de tarefas mais pesadas.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill makepad-2-0-eventsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/makepad-2-0-events/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Limitações
- Verifique com a documentação atual do Makepad 2.0; as APIs de upstream mudam frequentemente.
- Não execute scripts empacotados sem aprovação explícita do usuário.
Quando Usar
- Use quando este fluxo de trabalho de upstream corresponder ao objetivo declarado do usuário.
- Use quando a tarefa exigir os procedimentos documentados nesta habilidade.
Sistema de Eventos e Ações do Makepad 2.0
Visão Geral
O Makepad 2.0 usa um sistema de eventos de duas camadas:
Camada Splash -- Manipuladores de eventos inline escritos diretamente no código
script_mod!Splash (on_click,on_render,on_return,on_startup). Eles manipulam interações da UI declarativamente dentro do script, perto das definições dos widgets.Camada Rust -- O trait
MatchEventcomhandle_actions,handle_timer,handle_http_response, etc. Eles manipulam a lógica de negócios, I/O externo e qualquer coisa que precise do poder total do Rust.
Ambas as camadas se comunicam através de duas macros de ponte:
script_eval!(cx, { ... })-- Executa código Splash a partir do Rust (atualiza estado, aciona renders)script_apply_eval!(cx, widget_ref, { ... })-- Corrige propriedades de widgets a partir do Rust em tempo de execução
1. Manipuladores de Eventos Inline do Splash
Os manipuladores de eventos são anexados diretamente aos widgets dentro de blocos script_mod!. Eles usam
sintaxe de closure com || para nenhum argumento ou |arg| para callbacks que recebem um valor.
on_click -- Clique de Botão/Widget
Dispara quando o usuário clica em um botão ou widget clicável. Nenhum argumento para botões simples,
ou |checked| para CheckBox, que passa o novo estado booleano.
// Plain button click
add_button := Button{
text: "Add"
on_click: ||{
let text = ui.todo_input.text()
if text != "" {
add_todo(text, "")
ui.todo_input.set_text("")
}
}
}
// CheckBox click with checked state argument
check.on_click: |checked| toggle_todo(i, checked)
// Inline delete with closure capturing loop variable
delete.on_click: || delete_todo(i)
// Calling another widget's click programmatically
clear_done := ButtonFlatter{
text: "Clear completed"
on_click: ||{
todos.retain(|todo| !todo.done)
ui.todo_list.render()
}
}
on_render -- Renderização Dinâmica
Dispara quando .render() é chamado na view alvo. Este é o mecanismo principal para
conteúdo dinâmico. O corpo substitui o conteúdo de desenho anterior da view.
main_view := View{
width: Fill
height: Fill
on_render: ||{
counter_label := Label{
text: "Count: " + state.counter
draw_text.text_style.font_size: 24
}
}
}
// List rendering with for loop and per-item event handlers
todo_list := ScrollYView{
width: Fill height: Fill
new_batch: true
on_render: ||{
if todos.len() == 0
EmptyState{}
else for i, todo in todos {
TodoItem{
label.text: todo.text
check.active: todo.done
check.on_click: |checked| toggle_todo(i, checked)
delete.on_click: || delete_todo(i)
}
}
}
EmptyState{}
}
Ponto chave: on_render NÃO é chamado automaticamente. Você deve chamar ui.widget_name.render()
para acioná-lo. A propriedade new_batch: true em uma view diz ao sistema para limpar o conteúdo de desenho anterior antes de renderizar novamente.
on_return -- Tecla Enter do TextInput
Dispara quando o usuário pressiona Enter/Return dentro de um TextInput. Comumente usado para enviar formulários.
todo_input := TextInput{
width: Fill height: 9. * theme.space_1
empty_text: "What needs to be done?"
on_return: || ui.add_button.on_click()
}
on_startup -- Inicialização do App
Dispara uma vez quando o aplicativo inicia. Definido no nível Root. Comumente usado
para acionar renders iniciais.
ui: Root{
on_startup: ||{
ui.main_view.render()
}
main_window := Window{
// ...
}
}
Capacidades do Manipulador de Eventos
Dentro dos manipuladores de eventos você pode:
- Chamar funções Splash:
add_todo(text, "dev") - Ler valores de widgets:
let text = ui.todo_input.text() - Definir valores de widgets:
ui.todo_input.set_text("") - Acionar re-renders:
ui.todo_list.render() - Acionar outros cliques de widgets:
ui.add_button.on_click() - Modificar variáveis de estado:
state.counter += 1 - Usar métodos de array:
todos.push({text: "new", done: false}) - Usar fluxo de controle:
if text != "" { ... }
2. Manipulação de Eventos Rust -- Trait MatchEvent
O trait MatchEvent é o despachante de eventos do lado Rust. Ele recebe eventos da plataforma
…
Perguntas frequentes
O que é um 'evento'?
Um evento é uma ação que acontece, como um clique do mouse, o pressionar de uma tecla ou o carregamento do programa.
O que é 'Splash'?
Splash é a linguagem usada no Makepad para descrever a aparência e o comportamento básico da interface do usuário, de forma mais simples que o Rust.
Por que preciso chamar `.render()`?
Chamar `.render()` é como dizer ao Makepad para redesenhar uma parte da tela, atualizando o que o usuário vê com as novas informações ou mudanças.
Detalhes
Descrição original do autor
Makepad 2.0 guidance for events; use when building or debugging Makepad UI code.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3527
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC