invalid_ null_ aware_ operator
Detalhes sobre o diagnóstico 'invalid_null_aware_operator' produzido pelo analisador do Dart.
The element can't be null, so the null-aware operator '?' is unnecessary.
The map entry key can't be null, so the null-aware operator '?' is unnecessary.
The map entry value can't be null, so the null-aware operator '?' is unnecessary.
The receiver can't be 'null' because of short-circuiting, so the null-aware operator '{0}' can't be used.
The receiver can't be null, so the null-aware operator '{0}' is unnecessary.
Descrição
#
O analisador produz este diagnóstico quando um operador null-aware (?.,
?.., ?[, ?..[ ou ...?) é usado em um receptor que se sabe ser não anulável.
Exemplos
#O código a seguir produz este diagnóstico porque s não pode ser null:
int? getLength(String s) {
return s?.length;
}
O código a seguir produz este diagnóstico porque a não pode ser null:
var a = [];
var b = [...?a];
O código a seguir produz este diagnóstico porque s?.length não pode
retornar null:
void f(String? s) {
s?.length?.isEven;
}
O motivo pelo qual s?.length não pode retornar null é que o operador
null-aware depois de s faz um curto-circuito na avaliação tanto de length
quanto de isEven se s for null. Em outras palavras, se
s for null,
nem length nem isEven serão invocados, e se s
não for null, então
length não pode retornar um valor null. De qualquer forma,
isEven não pode
ser invocado em um valor null, então o operador null-aware não é necessário.
Veja Entendendo o null safety
para mais detalhes.
O código a seguir produz este diagnóstico porque s não pode ser null.
void f(Object? o) {
var s = o as String;
s?.length;
}
O motivo pelo qual s não pode ser null, apesar de o poder ser
null, é o
cast para String, que é um tipo não anulável. Se o tiver o valor
null, o
cast falhará e a invocação de length não acontecerá.
O código a seguir produz este diagnóstico porque s não pode ser null:
List<String> makeSingletonList(String s) {
return <String>[?s];
}
Correções comuns
#
Substitua o operador null-aware por um equivalente que não seja null-aware; por
exemplo, troque ?. por .:
int getLength(String s) {
return s.length;
}
(Observe que o tipo de retorno também foi alterado para não anulável, o que pode não ser apropriado em alguns casos.)
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ê.