null_ closures
Saiba mais sobre a regra de lint null_closures.
Não passe null como argumento onde se espera uma closure.
Detalhes
#NÃO FAÇA passe null como argumento onde se espera uma closure.
Muitas vezes, uma closure passada para um método só será chamada condicionalmente, de modo que os testes e as chamadas do "caminho feliz" em produção não revelam que
null resultará em uma exceção.
Esta regra só detecta literais null passados onde closures são esperadas nos seguintes locais:
Construtores
#-
De
dart:asyncFutureno 0º parâmetro posicionalFuture.microtaskno 0º parâmetro posicionalFuture.syncno 0º parâmetro posicionalTimerno 0º parâmetro posicionalTimer.periodicno 1º parâmetro posicional
- De
dart:coreList.generateno 1º parâmetro posicional
Funções estáticas
#-
De
dart:asyncscheduleMicrotaskno 0º parâmetro posicionalFuture.doWhileno 0º parâmetro posicionalFuture.forEachno 0º parâmetro posicionalFuture.waitno parâmetro nomeadocleanupTimer.runno 0º parâmetro posicional
Métodos de instância
#-
De
dart:asyncFuture.thenno 0º parâmetro posicionalFuture.completeno 0º parâmetro posicional
-
De
dart:collectionQueue.removeWhereno 0º parâmetro posicional- `Queue.retain
Iterable.firstWhereno 0º parâmetro posicional, e no parâmetro nomeadoorElseIterable.forEachno 0º parâmetro posicionalIterable.foldno 1º parâmetro posicionalIterable.lastWhereno 0º parâmetro posicional, e no parâmetro nomeadoorElseIterable.mapno 0º parâmetro posicionalIterable.reduceno 0º parâmetro posicionalIterable.singleWhereno 0º parâmetro posicional, e no parâmetro nomeadoorElseIterable.skipWhileno 0º parâmetro posicionalIterable.takeWhileno 0º parâmetro posicionalIterable.whereno 0º parâmetro posicionalList.removeWhereno 0º parâmetro posicionalList.retainWhereno 0º parâmetro posicionalString.replaceAllMappedno 1º parâmetro posicionalString.replaceFirstMappedno 1º parâmetro posicionalString.splitMapJoinnos parâmetros nomeadosonMatcheonNonMatch
RUIM:
[1, 3, 5].firstWhere((e) => e.isOdd, orElse: null);
BOM:
[1, 3, 5].firstWhere((e) => e.isOdd, orElse: () => null);
Ativar
#
Para ativar a regra null_closures, adicione null_closures em
linter > rules no seu arquivo analysis_options.yaml:
linter:
rules:
- null_closures
Se você usa a sintaxe de mapa YAML para configurar as regras de lint,
adicione null_closures: true em linter > rules:
linter:
rules:
null_closures: true
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ê.