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.retainWhere
の0番目の位置引数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.5.3を反映しています。最終更新日:2024年7月3日。 ソースコードを表示 または 問題を報告する。