首页 > 解决方案 > Dart null 安全条件语句?

问题描述

所以我有一个类Cache,它有一个compare返回bool.

我有一个可以为空的此类的实例。

Cache? recent;

recent我想在isnot nullcompare返回时执行一段代码false

如果没有零安全性,我就会这样做

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

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

当我在上面尝试零安全时,我得到

不能无条件调用“比较”方法,因为接收者可以为“空”。尝试使调用有条件(使用'?.')或向目标添加空检查('!')

当我在下面尝试时

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

它给了我

可空表达式不能用作条件。在将其用作条件之前,请尝试检查该值是否不是“空”。

标签: dartdart-null-safety

解决方案


您可以通过以下方式解决此问题

  • 使用局部变量(推荐

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

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

推荐阅读