什么是 ”?。”颤抖的运算符

时间:2020-02-19 06:42:02

标签: flutter dart timer operator-keyword

我正在许多地方使用图书馆? 使用运算符时,我无法理解其目的。

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();

1 个答案:

答案 0 :(得分:6)

?. [有条件的成员访问权限] -与.类似,但最左边的操作数可以是 null;示例:foo?.bar从表达式bar中选择属性foo 除非foonull(在这种情况下,foo?.bar的值为空)

来自Dart Language Tour (Other Operators)

TLDR:它只是在访问成员之前进行null检查。如果运算符的左手边不为null,则其工作方式类似于.,如果它是null值,则整件事就是null

在您的示例中:_debounceTimer?.isActive-如果_debounceTimer为空,则_debounceTimer?.isActive <-> null,如果_debounceTimer不为空,则{{1} } <-> _debounceTimer?.isActive

还要检查:Dart Language tour (Conditional Expressions)用于_debounceTimer.isActive??运算符。