Prelúdio
- Por que ler este livro
- Sobre o que este livro não trata
- Por que escrever sobre o funcionamento interno
- Mantenha o código-fonte por perto
- Trechos de código e exemplos
1. Funções Composable
- O significado das funções Composable
- Propriedades das funções Composable
- Contexto de chamada
- Idempotente
- Livre de efeitos colaterais não controlados
- Reiniciável
- Execução rápida
- Memoização posicional
- Similaridades com funções suspend
- A cor das funções Composable
- Tipos de função Composable
2. O Compiler do Compose
- Um Plugin do Compilador Kotlin
- Anotações do Compose
- Registrando extensões do Compilador
- Versão do compilador Kotlin
- Análise estática
- Checkers Estáticos
- Verificações de chamadas
- Verificações de tipo
- Verificações de declaração
- Supressão de diagnóstico
- Verificação da versão do runtime
- Geração de código
- O IR do Kotlin
- Lowering
- Inferindo estabilidade de classe
- Habilitando live literals
- Memorização de lambda no Compose
- Injetando o Composer
- Propagação de comparação
- Parâmetros padrão
- Geração de grupos de fluxo de controle
- Klib e geração de decoy
3. O runtime do Compose
- A slot table e a lista de mudanças
- A slot table em profundidade
- A lista de mudanças
- O Composer
- Alimentando o Composer
- Modelando as Alterações
- Otimizando quando escrever
- Grupos de escrita e leitura
- Lembrando valores
- Escopos de recomposição
- SideEffects no Composer
- Armazenando CompositionLocals
- Armazenando informações de origem
- Vinculando Composições via CompositionContext
- Acessando o snapshot atual do Estado
- Navegando pelos nós
- Mantendo leitor e escritor sincronizados
- Aplicando as mudanças
- Performance ao construir a árvore de nós
- Como as mudanças são aplicadas
- Anexando e desenhando os nós
- Composition
- Criando uma Composition
- O processo de Composição inicial
- Aplicando mudanças após a Composition inicial
- Informações adicionais sobre a Composition
- O Recompositor
- Iniciando o Recompositor
- Processo de recomposição
- Recomposição concorrente
- Estados do Recomposer
4. Compose UI
- Integrando UI com o runtime do Compose
- Mapeando alterações agendadas para mudanças reais na árvore
- Composition do ponto de vista do Compose UI
- Subcomposição do ponto de vista do Compose UI
- Refletindo mudanças na UI
- Diferentes tipos de Appliers
- Materializando um novo LayoutNode
- Fechando o círculo
- Materializando uma mudança para remover nós
- Materializando uma mudança para mover nós
- Materializando uma mudança para limpar todos os nós
- Medição no Compose UI
- Políticas de medição
- Medidas intrínsecas
- Restrições de Layout
- LookaheadLayout
- Modelando cadeias de modificadores
- Definindo modificadores no LayoutNode
- Como o LayoutNode processa novos modificadores
- Desenhando a árvore de nós
- Semântica no Jetpack Compose
- Notificando sobre mudanças semânticas
- Árvores semânticas mescladas e não mescladas
5. Sistema de snapshot de estado
- O que é snapshot state
- Sistemas de controle de concorrência
- Multiversion concurrency control (MCC ou MVCC)
- O Snapshot
- A árvore de snapshots
- Snapshots e threading
- Observando leituras e escritas
- MutableSnapshots
- GlobalSnapshot e snapshots aninhados
- StateObjects e StateRecords
- Lendo e escrevendo estado
- Removendo ou reutilizando registros obsoletos
- Propagação de mudanças
- Mesclando conflitos de escrita
6. Efeitos e manipuladores de efeito
- Introduzindo efeitos colaterais
- Efeitos colaterais no Compose
- Do que precisamos
- Manipuladores de Efeito
- Efeitos não suspensos
- Efeitos suspensos
- Adaptadores para bibliotecas de terceiros
7. Casos de uso avançados do Compose Runtime
- Compose runtime vs Compose UI
- (Re-) Introduzindo composition
- Composição de gráficos vetoriais
- Construindo a árvore de imagem vetorial
- Integrando a composição vetorial no Compose UI
- Gerenciando DOM com Compose
- Composição independente no navegador
- Conclusão