Flutter Dart语法让我丧命->;无效回调
我使用了一些代码,但无法理解这种语法原理: 例如: ……某处。。。在StatefulWidget类中:Flutter Dart语法让我丧命->;无效回调,flutter,dart,Flutter,Dart,我使用了一些代码,但无法理解这种语法原理: 例如: ……某处。。。在StatefulWidget类中: @override void initState() { super.initState(); someClass.onCallback = _onCallback; } _onCallback(){ print('callback'); } 我猜这里如果(_callback!=null){u callback()}我们初始化回调(如果不纠正我
@override
void initState() {
super.initState();
someClass.onCallback = _onCallback;
}
_onCallback(){
print('callback');
}
我猜这里
如果(_callback!=null){u callback()}
我们初始化回调(如果不纠正我)。但是为什么在initState中我们不带参数地调用onCallback导致setter回调具有voidcallback参数呢?我不知道Dart,但我知道Java、JavaScript、Groovy和C/C++各有不同的扩展
你误解了这件事:
set onCallback(VoidCallback callback){
_callback = callback;
}
\u callback=callback
是一个赋值:我们用参数callback
的值赋值\u callback
由onCallback
的签名给出,尤其是集合,表达式someClass.onCallback=\u onCallback
也是一个赋值,只是它调用了setter
据我所知,\u callback
是一个函数,但它的默认值是null
。您不能调用null
的内容,因为否则会出现错误:Java/Groovy将抛出NullPointerException
和Dart可能类似的内容
因此,下面的代码在调用它之前正在检查\u callback
是否为空:
if(_callback != null){
_callback();
}
如前所述,我不知道Dart,但看到它作为JavaScript的替代品(引用自维基百科),你有相同的概念:每个对象都是引用,引用可能是
null
,我开始有点理解了。如果这对你来说不难的话,你可以用Java编写它。
if(_callback != null){
_callback();
}