non_ exhaustive_ switch_ expression
Detalhes sobre o diagnóstico 'non_exhaustive_switch_expression' 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 expressão switch 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 expressão switch não tem um caso
para o valor E.three:
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
};
Correções comuns
#Se os valores que faltam tiverem um significado distinto para a expressão switch, então adicione um caso para cada um dos valores que não têm correspondência:
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
E.three => 'three',
};
Se os valores que faltam não precisarem ser correspondidos, então adicione um padrão curinga que retorne um valor padrão simples:
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
_ => 'unknown',
};
Esteja ciente de que um padrão curinga vai tratar quaisquer valores adicionados
ao tipo no futuro. Você perde a capacidade de o compilador avisar que o switch
precisa ser atualizado para considerar novos tipos.
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ê.