avoid_ double_ and_ int_ checks
Detalhes sobre o diagnóstico 'avoid_double_and_int_checks' produzido pelo analisador do Dart.
Explicit check for double or int.
Descrição
#
O analisador emite este diagnóstico quando uma instrução if testa o tipo
de uma variável com is double e o else if seguinte testa a mesma
variável com is int.
Quando compilados para JavaScript, valores int e double são representados
como valores Number do JavaScript. Como todo valor int também satisfaz a
verificação is double, o ramo is int é inalcançável.
Para saber mais sobre como o Dart representa números em diferentes plataformas, incluindo quando compilado para JavaScript, consulte Números no Dart.
Exemplo
#
O código a seguir produz este diagnóstico porque
x é testado com is double e depois com is int,
o que torna o ramo is int inalcançável quando compilado para JavaScript:
void f(Object x) {
if (x is double) {
print('double');
} else if (x is int) {
print('int');
}
}
Correções comuns
#
Se a distinção entre int e double não for significativa, verifique se o
tipo é num:
void f(Object x) {
if (x is num) {
print('num');
}
}
Se os dois ramos forem necessários e for aceitável que valores double
inteiros (como 3.0) entrem no ramo is int, verifique is int
primeiro.
Isso garante que valores inteiros entrem no ramo is int em todas as
plataformas:
void f(Object x) {
if (x is int) {
print('int');
} else if (x is double) {
print('double');
}
}
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ê.