首页 > 解决方案 > Dart - 值可以为 null 的表达式必须先进行 null 检查,然后才能取消引用

问题描述

这是我在初始化fun后添加的 Dart 代码

但是,它仍然无法正常工作并抛出一个错误,提示“值可以为空的表达式必须先进行空检查,然后才能取消引用”

int add(int a, int b) => a + b;

Function? fun;

void main() {
  fun = add;
  
  var result = fun(20, 30);
  
  print("Result is ${result}");
}

我如何对fun进行空值检查?

标签: flutterdart

解决方案


您与空值进行比较,分析器推断成功检查变量不为空后:

void testFunction(Function? f) {
  if (f != null) {
     var result = f(20, 30);
     print("Result is ${result}");
  }
}

一个警告是它目前不适用于全局变量:

分析器无法对整个应用程序的流程进行建模,因此它无法预测全局变量或类字段的值。

https://dart.dev/null-safety#using-variables-and-expressions

另请注意,没有可识别 null 的函数调用运算符,但您可以编写:

function?.call(arg1, arg2);

推荐阅读