首页 > 解决方案 > 在 Flutter/Dart 中,有什么方法可以直接调用作为可选参数传递的函数,同时还可以防止空值错误?

问题描述

从这个答案中,我了解到我可以在调用作为可选参数传递的函数之前检查空值:

myFunction ({ Function onFocusChange }) {

    if(onFocusChange != null) {
       onFocusChange(boolValue)
    }

}

我也明白 Flutter 中有一个像 Swift 和 Kotlin 这样的可选概念,使用“?” 运营商,尽管他们都有自己的怪癖。

我要问的是是否有任何方法可以调用可选函数并在它为空时静默失败,就像在 Swift 中一样:

onFocusChange?(boolValue);

我尝试在 Flutter 上添加问号,它立即尝试将“onFocusChange”评估为布尔值(三元运算符)。

标签: functionflutteroptional

解决方案


我想知道同样的事情。我尝试了建议的onFocusChange??(boolValue);,但这对我不起作用。(也许是由于版本差异?)我最终做的是(onFocusChange ?? () {})();,这对我来说可以保持在一条线上。仍然没有我希望的简单性,但我更喜欢它在美学上而不是多行代码检查null。不知道 dart 是否足够聪明,不会在onFocusChangeis时实际调用空函数null,或者如果这种事情分散在整个代码中,它可能会对性能造成多大影响(如果有的话)。


推荐阅读