null_closures
不要将 null
作为参数传递到需要闭包的地方。
详情
#不要将 null
作为参数传递到需要闭包的地方。
通常,传递给方法的闭包仅在有条件的情况下调用,因此测试和“happy path”生产调用不会揭示 null
将导致抛出异常。
此规则仅捕获在以下位置传递到需要闭包的地方的 null 字面量
构造函数
#- 来自
dart:async
Future
在第 0 个位置参数Future.microtask
在第 0 个位置参数Future.sync
在第 0 个位置参数Timer
在第 0 个位置参数Timer.periodic
在第 1 个位置参数
- 来自
dart:core
List.generate
在第 1 个位置参数
静态函数
#- 来自
dart:async
scheduleMicrotask
在第 0 个位置参数Future.doWhile
在第 0 个位置参数Future.forEach
在第 0 个位置参数Future.wait
在名为cleanup
的参数Timer.run
在第 0 个位置参数
实例方法
#- 来自
dart:async
Future.then
在第 0 个位置参数Future.complete
在第 0 个位置参数
- 来自
dart:collection
Queue.removeWhere
在第 0 个位置参数Queue.retain
Iterable.firstWhere
在第 0 个位置参数,以及名为orElse
的参数Iterable.forEach
在第 0 个位置参数Iterable.fold
在第 1 个位置参数Iterable.lastWhere
在第 0 个位置参数,以及名为orElse
的参数Iterable.map
在第 0 个位置参数Iterable.reduce
在第 0 个位置参数Iterable.singleWhere
在第 0 个位置参数,以及名为orElse
的参数Iterable.skipWhile
在第 0 个位置参数Iterable.takeWhile
在第 0 个位置参数Iterable.where
在第 0 个位置参数List.removeWhere
在第 0 个位置参数List.retainWhere
在第 0 个位置参数String.replaceAllMapped
在第 1 个位置参数String.replaceFirstMapped
在第 1 个位置参数String.splitMapJoin
在名为onMatch
和onNonMatch
的参数
错误示例
dart
[1, 3, 5].firstWhere((e) => e.isOdd, orElse: null);
正确示例
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
如果您改为使用 YAML map 语法来配置 linter 规则,请在 linter > rules 下添加 null_closures: true
analysis_options.yaml
yaml
linter:
rules:
null_closures: true
除非另有说明,否则本网站上的文档反映了 Dart 3.7.1 版本。页面上次更新于 2025-03-07。 查看源代码 或 报告问题。