Classes sealed e switch Exaustivo
Feche uma hierarquia que o compilador possa verificar.
Classes sealed e switch Exaustivo é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 2 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.
Uma família fechada
Uma classe selada define um conjunto fixo de subtipos. Nenhum código fora do arquivo pode adicionar outro, portanto a família é completamente conhecida.
sealed class Shape {}Declarando subtipos
As subclasses de um tipo selado ficam no mesmo arquivo. Juntas, elas formam cada variante possível que o compilador precisa considerar.
class Circle extends Shape {}
class Square extends Shape {}Não pode ser instanciada diretamente
Uma classe selada é implicitamente abstrata, portanto nunca é criada diretamente. Você sempre cria apenas um de seus subtipos conhecidos.
var s = Shape(); // error
var s = Circle(); // okPor que sealed ajuda
Como os subtipos são exaustivos, o Dart conhece a lista completa. Assim, switch pode verificar se você tratou todos os casos.
Use switch sobre os subtipos
Um switch sobre um valor selado pode corresponder a cada subtipo por meio de um padrão. Cada ramo enxerga o tipo exato ao qual correspondeu.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Exaustividade verificada
Se você esquecer um subtipo, o compilador informará um erro. Nunca será possível ignorar silenciosamente um caso em um switch selado.
default não é necessário
Como todos os casos são cobertos, você não precisa de um ramo default. Adicionar um apenas esconderia casos ausentes no futuro.
switch como expressão
Use switch como uma expressão para calcular um valor diretamente. A exaustividade continua valendo, portanto cada ramo precisa retornar algo.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Adicionando uma nova variante
Adicione um novo subtipo posteriormente e todo switch que não o considerar será sinalizado em vermelho. O compilador orientará você a atualizar cada um deles.
class Triangle extends Shape {}
// existing switches now errorsealed vs abstract
Uma classe abstrata permite subtipos externos desconhecidos, portanto os switch não podem ser exaustivos. sealed fecha o conjunto para permitir uma verificação completa.
Excelente para estados
Tipos selados são ideais para modelar estados do aplicativo, como Loading, Success e Error. Assim, fica garantido que cada ramo da interface exista. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Verificação rápida
Verificação rápida sobre a exaustividade de sealed.
Recapitulação
Você viu que classes seladas fecham uma família de tipos e tornam todo switch exaustivo, fazendo com que casos ausentes se tornem erros de compilação. 🎯
Aprenda Dart com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Classes sealed e switch Exaustivo” é grátis?
Sim — o texto completo de “Classes sealed e switch Exaustivo” é 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 “Classes sealed e switch Exaustivo”?
Feche uma hierarquia que o compilador possa verificar. 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 2 de 4.
Quanto tempo leva a aula “Classes sealed e switch Exaustivo”?
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