?.
[Условный доступ к элементу] - Как и .
, но самый левый операнд может быть null
; пример: foo?.bar
выбирает свойство bar
из выражения foo
, если foo
не равно null
(в этом случае значение foo?.bar
равно нулю)
из Dart Языковой тур (другие операторы)
TLDR: он просто проверяет null
перед тем, как получить доступ к члену. Если левая часть оператора не равна нулю, тогда он работает просто как .
, а если это значение null
, то все это равно null
.
В вашем примере: _debounceTimer?.isActive
- если _debounceTimer
равно нулю, тогда _debounceTimer?.isActive
<-> null
, а если _debounceTimer
не равно нулю, то _debounceTimer?.isActive
<-> _debounceTimer.isActive
.
Также проверьте: Dart Language tour ( Условные выражения) для ??
и ?
оператора.