null_closures
不要将 null
作为期望闭包的参数传递。
此规则从 Dart 2.0 开始可用。
此规则有可用的快速修复。
详情
#不要将 null
作为期望闭包的参数传递。
通常,传递给方法的闭包只会按条件调用,因此测试和“快乐路径”生产调用不会显示 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
除非另有说明,本网站上的文档反映了 Dart 3.6.0。页面上次更新于 2024-07-03。 查看源代码 或报告问题。