null_closures
Do not pass null
as an argument where a closure is expected.
此规则自 Dart 2.0 版本起可用。
_规则集:recommended , flutter _
此规则提供 快速修复 。
详情
#DON'T pass null
as an argument where a closure is expected.
Often a closure that is passed to a method will only be called conditionally, so that tests and "happy path" production calls do not reveal that null
will result in an exception being thrown.
This rule only catches null literals being passed where closures are expected in the following locations:
Constructors
#- From
dart:async
Future
at the 0th positional parameterFuture.microtask
at the 0th positional parameterFuture.sync
at the 0th positional parameterTimer
at the 0th positional parameterTimer.periodic
at the 1st positional parameter
- From
dart:core
List.generate
at the 1st positional parameter
Static functions
#- From
dart:async
scheduleMicrotask
at the 0th positional parameterFuture.doWhile
at the 0th positional parameterFuture.forEach
at the 0th positional parameterFuture.wait
at the named parametercleanup
Timer.run
at the 0th positional parameter
Instance methods
#- From
dart:async
Future.then
at the 0th positional parameterFuture.complete
at the 0th positional parameter
- From
dart:collection
Queue.removeWhere
at the 0th positional parameter- `Queue.retain
Iterable.firstWhere
at the 0th positional parameter, and the named parameterorElse
Iterable.forEach
at the 0th positional parameterIterable.fold
at the 1st positional parameterIterable.lastWhere
at the 0th positional parameter, and the named parameterorElse
Iterable.map
at the 0th positional parameterIterable.reduce
at the 0th positional parameterIterable.singleWhere
at the 0th positional parameter, and the named parameterorElse
Iterable.skipWhile
at the 0th positional parameterIterable.takeWhile
at the 0th positional parameterIterable.where
at the 0th positional parameterList.removeWhere
at the 0th positional parameterList.retainWhere
at the 0th positional parameterString.replaceAllMapped
at the 1st positional parameterString.replaceFirstMapped
at the 1st positional parameterString.splitMapJoin
at the named parametersonMatch
andonNonMatch
BAD:
dart
[1, 3, 5].firstWhere((e) => e.isOdd, orElse: null);
GOOD:
dart
[1, 3, 5].firstWhere((e) => e.isOdd, orElse: () => null);
使用方法
#要启用 null_closures
规则,请在你的 analysis_options.yaml
文件中,在 linter > rules 下添加 null_closures
:
analysis_options.yaml
yaml
linter:
rules:
- null_closures
除非另有说明,否则本网站上的文档反映的是 Dart 3.6.0。页面最后更新于 2025-02-05。 查看源代码 或 报告问题.