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.6.0。頁面上次更新時間為 2024-07-03。檢視原始碼或回報問題。