Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart语法让我丧命->;无效回调_Flutter_Dart - Fatal编程技术网

Flutter Dart语法让我丧命->;无效回调

Flutter Dart语法让我丧命->;无效回调,flutter,dart,Flutter,Dart,我使用了一些代码,但无法理解这种语法原理: 例如: ……某处。。。在StatefulWidget类中: @override void initState() { super.initState(); someClass.onCallback = _onCallback; } _onCallback(){ print('callback'); } 我猜这里如果(_callback!=null){u callback()}我们初始化回调(如果不纠正我

我使用了一些代码,但无法理解这种语法原理: 例如:

……某处。。。在StatefulWidget类中:

  @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();
  }