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:asyncFutureat the 0th positional parameterFuture.microtaskat the 0th positional parameterFuture.syncat the 0th positional parameterTimerat the 0th positional parameterTimer.periodicat the 1st positional parameter
- From
dart:coreList.generateat the 1st positional parameter
Static functions
#- From
dart:asyncscheduleMicrotaskat the 0th positional parameterFuture.doWhileat the 0th positional parameterFuture.forEachat the 0th positional parameterFuture.waitat the named parametercleanupTimer.runat the 0th positional parameter
Instance methods
#- From
dart:asyncFuture.thenat the 0th positional parameterFuture.completeat the 0th positional parameter
- From
dart:collectionQueue.removeWhereat the 0th positional parameter- `Queue.retain
Iterable.firstWhereat the 0th positional parameter, and the named parameterorElseIterable.forEachat the 0th positional parameterIterable.foldat the 1st positional parameterIterable.lastWhereat the 0th positional parameter, and the named parameterorElseIterable.mapat the 0th positional parameterIterable.reduceat the 0th positional parameterIterable.singleWhereat the 0th positional parameter, and the named parameterorElseIterable.skipWhileat the 0th positional parameterIterable.takeWhileat the 0th positional parameterIterable.whereat the 0th positional parameterList.removeWhereat the 0th positional parameterList.retainWhereat the 0th positional parameterString.replaceAllMappedat the 1st positional parameterString.replaceFirstMappedat the 1st positional parameterString.splitMapJoinat the named parametersonMatchandonNonMatch
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。 查看源代码 或 报告问题.