尽管存在空检查,但Dart空安全性会抱怨函数变为空

所以我有一个以下类,它onPressed作为一个可以为空的道具:

class Class1 {
  final Function? onPressed;
  
  const Class1({ this.onPressed });
  
  callMethod() {
    if(onPressed != null) {
      onPressed(); // Complains here
    }
  }
}

如您所见,我检查了是否onPressed为空。但是 dart 仍然抱怨这条消息The function can't be unconditionally invoked because it can be 'null'. (view docs) Try adding a null check ('!').请帮助我。

回答

尝试按照编译器的建议添加空检查 ('!')

class Class1 {
  final Function? onPressed;

  const Class1({this.onPressed});

  callMethod() {
    if (onPressed != null) {
      onPressed!(); //Note: ! is added here
    }
  }
}


以上是尽管存在空检查,但Dart空安全性会抱怨函数变为空的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>