Campos Finais e Imutabilidade Profunda
Crie objetos que nunca mudam.
Campos Finais e Imutabilidade Profunda é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
Imutabilidade por design
Um objeto imutável nunca muda depois de ser criado. Isso torna seus dados previsíveis e seguros para compartilhar em todo o aplicativo. 🔒
Conheça final
Um campo final é definido uma única vez, durante a construção, e nunca pode receber uma nova atribuição. O valor fica fixo durante toda a vida útil do objeto.
class Point {
final int x;
Point(this.x);
}Nova atribuição é um erro
Se tentar atribuir um novo valor a um campo final, o compilador impedirá a operação. O erro é detectado antes mesmo de o programa ser executado.
final p = Point(3);
p.x = 9; // compile errorfinal vs const
Use const quando o valor for conhecido em tempo de compilação, e final quando ele for calculado em tempo de execução. Ambos impedem novas atribuições posteriormente.
const pi = 3.14;
final now = DateTime.now();Construtores const
Defina um const constructor para uma classe e o Dart poderá criar instâncias realmente imutáveis. Todos os campos também precisam ser final.
class Color {
final int rgb;
const Color(this.rgb);
}Instâncias const compartilhadas
Dois objetos const idênticos são exatamente a mesma instância na memória. O Dart os reutiliza, economizando espaço e tempo.
const a = Color(0);
const b = Color(0);
print(identical(a, b)); // trueSuperficial vs profunda
Um campo final impede novas atribuições, mas não congela aquilo para o que ele aponta. Uma List final ainda pode receber novos itens.
final nums = [1, 2];
nums.add(3); // allowed!O objetivo da imutabilidade profunda
Imutabilidade profunda significa que nada que possa ser alcançado a partir do objeto também pode mudar. Para alcançar isso completamente, é preciso mais do que final.
Congele coleções
Envolva uma lista com List.unmodifiable para que qualquer tentativa de adicionar ou remover itens lance uma exceção. Assim, toda a estrutura permanece congelada.
final tags = List.unmodifiable([1, 2]);
tags.add(3); // throws at runtimeLiterais de coleção const
Coloque const antes de um literal para obter uma coleção profundamente imutável, criada em tempo de compilação. Ela não pode ser modificada de forma alguma.
const days = ['Mon', 'Tue'];
// days.add(...) is forbiddenPor que isso importa
Dados imutáveis são seguros para uso em várias threads, fáceis de armazenar em cache e adequados ao gerenciamento de estado no Flutter. Os erros causados por mutações inesperadas simplesmente desaparecem.
Verificação rápida
Uma última verificação sobre final e imutabilidade.
Recapitulação
Você aprendeu que final bloqueia um campo, const bloqueia valores definidos em tempo de compilação e a imutabilidade profunda exige coleções unmodifiable ou const. 🎉
Perguntas Frequentes
A aula “Campos Finais e Imutabilidade Profunda” é grátis?
Sim — o texto completo de “Campos Finais e Imutabilidade Profunda” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “Campos Finais e Imutabilidade Profunda”?
Crie objetos que nunca mudam. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Campos Finais e Imutabilidade Profunda”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Campos Finais e Imutabilidade Profunda
- Classes sealed e switch Exaustivo
- Modificadores base, interface e final
- copyWith e Igualdade por Valor