non_ exhaustive_ switch_ statement
Detalhes sobre o diagnóstico 'non_exhaustive_switch_statement' produzido pelo analisador do Dart.
The enum '{0}' isn't exhaustively matched by the switch cases because some of the enum constants are private.
The type '{0}' isn't exhaustively matched by the switch cases since it doesn't match the pattern '{1}'.
Descrição
#
O analisador emite este diagnóstico quando uma instrução switch sobre um tipo
exaustivo não tem um caso para um ou mais dos valores possíveis que podem passar
por ela.
Exemplo
#
O código a seguir gera este diagnóstico porque a instrução switch não tem um caso
para o valor E.three, e E é um tipo exaustivo:
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
}
}
Correções comuns
#Adicione um caso para cada uma das constantes que não estão sendo correspondidas no momento:
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
break;
case E.three:
}
}
Se os valores que faltam não precisarem ser correspondidos, então adicione uma
cláusula default ou um padrão curinga:
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
break;
default:
}
}
Mas esteja ciente de que adicionar uma cláusula default ou um padrão curinga
fará com que quaisquer valores futuros do tipo exaustivo também sejam tratados.
Assim, você perde a capacidade de o compilador avisar que o switch precisa ser
atualizado.
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.