android-jetpack-compose-expert
Guia para criar interfaces de usuário em Android com Jetpack Compose. Ajuda com gerenciamento de estado e design.
O que ela faz
Este guia ajuda a criar interfaces de usuário modernas para aplicativos Android usando Jetpack Compose. Ele ensina como organizar o código, gerenciar informações que mudam na tela, navegar entre telas e otimizar o desempenho.
Quando usar
- ✓Ao iniciar um novo app Android com Jetpack Compose.
- ✓Ao mudar layouts antigos (XML) para o novo sistema Compose.
- ✓Ao criar funcionalidades complexas que precisam de atualizações constantes na tela.
Exemplo do que pedir para a IA
“Como posso configurar a navegação segura entre telas no meu app Android com Jetpack Compose?”
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
Ele fornece exemplos de código e explicações sobre como usar componentes do Jetpack Compose, como `ViewModel` para gerenciar dados e `NavHost` para navegação. O objetivo é escrever código mais limpo e eficiente.
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 android-jetpack-compose-expertOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/android-jetpack-compose-expert/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.
Especialista em Jetpack Compose para Android
Visão Geral
Um guia completo para construir aplicativos Android de qualidade de produção usando Jetpack Compose. Esta habilidade abrange padrões arquiteturais, gerenciamento de estado com ViewModels, segurança de tipo na navegação e técnicas de otimização de desempenho.
Quando Usar Esta Habilidade
- Use ao iniciar um novo projeto Android com Jetpack Compose.
- Use ao migrar layouts XML legados para Compose.
- Use ao implementar gerenciamento de estado de UI complexo e efeitos colaterais.
- Use ao otimizar o desempenho do Compose (contagens de recomposição, estabilidade).
- Use ao configurar a Navegação com segurança de tipo.
Guia Passo a Passo
1. Configuração do Projeto e Dependências
Certifique-se de que seu libs.versions.toml inclua o BOM e as bibliotecas Compose necessárias.
[versions]
composeBom = "2024.02.01"
activityCompose = "1.8.2"
[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
2. Padrão de Gerenciamento de Estado (MVI/MVVM)
Use ViewModel com StateFlow para expor o estado da UI. Evite expor MutableStateFlow.
// UI State Definition
data class UserUiState(
val isLoading: Boolean = false,
val user: User? = null,
val error: String? = null
)
// ViewModel
class UserViewModel @Inject constructor(
private val userRepository: UserRepository
) : ViewModel() {
private val _uiState = MutableStateFlow(UserUiState())
val uiState: StateFlow<UserUiState> = _uiState.asStateFlow()
fun loadUser() {
viewModelScope.launch {
_uiState.update { it.copy(isLoading = true) }
try {
val user = userRepository.getUser()
_uiState.update { it.copy(user = user, isLoading = false) }
} catch (e: Exception) {
_uiState.update { it.copy(error = e.message, isLoading = false) }
}
}
}
}
3. Criando o Composable da Tela
Consuma o estado em um composable de "Tela" e passe os dados para componentes sem estado.
@Composable
fun UserScreen(
viewModel: UserViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
UserContent(
uiState = uiState,
onRetry = viewModel::loadUser
)
}
@Composable
fun UserContent(
uiState: UserUiState,
onRetry: () -> Unit
) {
Scaffold { padding ->
Box(modifier = Modifier.padding(padding)) {
when {
uiState.isLoading -> CircularProgressIndicator()
uiState.error != null -> ErrorView(uiState.error, onRetry)
uiState.user != null -> UserProfile(uiState.user)
}
}
}
}
Exemplos
Exemplo 1: Navegação com Segurança de Tipo
Usando a nova Navegação Compose com Segurança de Tipo (disponível em versões recentes).
// Define Destinations
@Serializable
object Home
@Serializable
data class Profile(val userId: String)
// Setup NavHost
@Composable
fun AppNavHost(navController: NavHostController) {
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(userId = id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(userId = profile.userId)
}
}
}
Melhores Práticas
- ✅ Faça: Use
rememberederivedStateOfpara minimizar cálculos desnecessários durante a recomposição. - ✅ Faça: Marque classes de dados usadas no estado da UI como
@Immutableou@Stablese elas contiveremListou outros tipos instáveis para habilitar o salto inteligente de recomposição. - ✅ Faça: Use
LaunchedEffectpara efeitos colaterais únicos (como exibir um Snackbar) acionados por alterações de estado. - ❌ Não faça: Execute operações caras (como ordenar uma lista) diretamente dentro do corpo da função Composable sem
remember.
…
Perguntas frequentes
O que é Jetpack Compose?
É uma forma moderna de criar interfaces de usuário para Android, usando código Kotlin em vez de arquivos XML.
O que é um ViewModel?
É uma classe que ajuda a guardar e gerenciar os dados da tela, sobrevivendo a mudanças como rotações do celular.
O que significa 'navegação type-safe'?
Significa que o sistema de navegação verifica se você está passando os dados corretos entre as telas, evitando erros.
Detalhes
Descrição original do autor
Expert guidance for building modern Android UIs with Jetpack Compose, covering state management, navigation, performance, and Material Design 3.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2128
- 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
android-clean-architecture
Faz seu agente organizar projetos Android de forma eficiente. Ele estrutura o código para facilitar a manutenção e o desenvolvimento de novos recursos.
affaan-m/ECC
compose-multiplatform-patterns
Ajuda seu agente a usar padrões do Compose Multiplatform e Jetpack Compose em projetos KMP. Ele cobre gerenciamento de estado, navegação, temas e performance. Útil para criar interfaces de usuário consistentes.
affaan-m/ECC
dart-flutter-patterns
Faz seu agente escrever código para apps Dart e Flutter. Ele usa padrões modernos para criar apps robustos e fáceis de gerenciar.
affaan-m/ECC