我正在许多地方使用图书馆? 使用运算符时,我无法理解其目的。
Timer _debounceTimer;
@override
initState() {
_textController.addListener(() {
// We debounce the listener as sometimes the caret position is updated after the listener
// this assures us we get an accurate caret position.
if (_debounceTimer?.isActive ?? false) _debounceTimer.cancel();
答案 0 :(得分:6)
来自Dart Language Tour (Other Operators)的
?.
[有条件的成员访问权限] -与.
类似,但最左边的操作数可以是null
;示例:foo?.bar
从表达式bar
中选择属性foo
除非foo
为null
(在这种情况下,foo?.bar
的值为空)
TLDR:它只是在访问成员之前进行null
检查。如果运算符的左手边不为null,则其工作方式类似于.
,如果它是null
值,则整件事就是null
。
在您的示例中:_debounceTimer?.isActive
-如果_debounceTimer
为空,则_debounceTimer?.isActive
<-> null
,如果_debounceTimer
不为空,则{{1} } <-> _debounceTimer?.isActive
。
还要检查:Dart Language tour (Conditional Expressions)用于_debounceTimer.isActive
和??
运算符。