Dart null 安全条件语句?

Dart null safety conditional statement?

所以我有一个 class Cache 有一个方法 compare 那 returns 一个 bool.

我有一个可以为 null 的 class 实例。

Cache? recent;

我想在recentnot nullcompare[=41=时执行一段代码] returns false

如果没有空安全,我就完成了

if(recent!=null && !recent.compare()){
  //code
}

如何在启用空安全的情况下做同样的事情?

当我尝试上面的空安全时,我得到

The method 'compare' can't be unconditionally invoked because the receiver can be 'null'. Try making the call conditional (using '?.') or adding a null check to the target ('!')

当我在下面尝试时

if(!recent?.compare()){
  //code
}

它给了我

A nullable expression can't be used as a condition. Try checking that the value isn't 'null' before using it as a condition.

您可以通过

解决这个问题
  • 使用局部变量(推荐

    var r = recent; // Local variable
    if (r != null && !r.compare()) {
      // ...
    }
    
  • 使用 Bang 运算符 (!)

    if (!recent!.compare()) { 
      // ...
    }