KasyKasy

Widget na Tela Inicial

Adicione um widget no home screen do iOS e Android. Toda infraestrutura nativa já vem pronta.

Widget de tela inicial (aquele que o usuário coloca ao lado dos ícones) nos dois sistemas. Toda a parte nativa já vem no projeto: target Xcode, Kotlin Glance, entitlements, App Group.

Implementação

Pelo MCP: peça ao assistente "adiciona widget no meu projeto". Ele roda add_feature por você. Veja MCP do Kasy.

  1. Rode:

    kasy add widget
  2. Personalize os dados exibidos editando o método update() em lib/core/home_widgets/home_widget_mywidget_service.dart:

    1. Em update() salve os campos via HomeWidget.saveWidgetData('chave', 'valor')
    2. No iOS: leia com UserDefaults(suiteName: appGroupId) e exiba com SwiftUI
    3. No Android: leia com currentState.preferences.getString('chave', 'padrão') e exiba com Glance Compose
  3. No iOS, confirme que o App Group (group.<seu-bundle-id>) existe na sua conta Apple. O Xcode com assinatura automática cria sozinho no primeiro build. Se falhar:

    1. developer.apple.com → Identifiers
    2. Registre group.<seu-bundle-id> (ex.: group.com.exemplo.meuapp)
    3. Ative nos dois App IDs: app principal e <bundle-id>.HomeWidgetExtension
    4. Regenere os perfis no Xcode
    App Group habilitado no App ID da extensão no developer.apple.com
    developer.apple.com: capability App Groups ativada no App ID do HomeWidgetExtension

    No Android não precisa de nenhuma configuração extra: funciona no emulador e device físico direto.

Informações

O que já vem pronto

ParteiOSAndroid
Dependências (home_widget, background_fetch)SimSim
Código Dart (inicialização, background task)SimSim
Widget Extension Swift + target no XcodeSimNão
Entitlements com App GroupSimNão
MyWidget.kt (Glance) + receptorNãoSim
Registro no AndroidManifest.xmlNãoSim
Bundle ID substituído automaticamenteSimSim

Conteúdo padrão

O widget entregue mostra dois campos como exemplo:

  • title: ex. "Olá, {userId}"
  • counter: número ou texto curto, padrão "0"

Personalizar

CamadaArquivoIDE
Dados (o que enviar)home_widget_mywidget_service.dart → update()VS Code
Visual iOSios/HomeWidgetExtension/MyWidget.swiftXcode
Visual Androidandroid/.../MyWidget.ktAndroid Studio

Como o widget atualiza

O background_fetch roda a cada ~15 minutos mesmo com o app fechado. Ele chama MyWidgetHomeWidget.update(), que salva os dados e notifica o sistema para redesenhar.

Para forçar atualização manual durante desenvolvimento: Console Admin → Ferramentas → Atualizar MyWidget.

No simulador iOS dá para testar layout e dados. Atualização em background e cliques são inconsistentes no simulador: use device físico para comportamento real.

Atualizado em 03/11/2026