no_ default_ cases
Detalhes sobre o diagnóstico 'no_default_cases' produzido pelo analisador do Dart.
Invalid use of 'default' member in a switch.
Descrição
#
O analisador emite este diagnóstico quando uma instrução switch sobre um valor
de enum ou sobre uma instância de uma classe semelhante a enum tem uma cláusula
default.
Classes semelhantes a enum são classes não abstratas que têm:
- Apenas construtores privados e que não são
factory. - Dois ou mais campos
static constcujo tipo é a classe que os envolve. - Nenhuma subclasse na biblioteca que a define.
Exemplos
#
O código a seguir gera este diagnóstico porque a instrução switch sobre o valor
do enum e tem uma cláusula default:
enum E { a, b, c }
void f(E e) {
switch (e) {
case .a:
print('a');
default:
print('other');
}
}
O código a seguir gera este diagnóstico porque a instrução switch sobre c,
uma instância da classe semelhante a enum C, tem uma cláusula default:
class const C._(final int i) {
static const C a = ._(1);
static const C b = ._(2);
static const C c = ._(3);
}
void f(C c) {
switch (c) {
case .a:
print('a');
default:
print('other');
}
}
Correções comuns
#
Se o valor for um valor de enum, substitua a cláusula default por cláusulas
case para os valores do enum que ainda não são tratados:
enum E { a, b, c }
void f(E e) {
switch (e) {
case .a:
print('a');
case .b:
case .c:
print('other');
}
}
Se o valor for uma instância de uma classe semelhante a enum, substitua a
cláusula default por cláusulas case para as constantes que ainda não são
tratadas:
class const C._(final int i) {
static const C a = ._(1);
static const C b = ._(2);
static const C c = ._(3);
}
void f(C c) {
switch (c) {
case .a:
print('a');
case .b:
case .c:
print('other');
}
}
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ê.