具有不匹配参数的闭包调用:函数'call'

时间:2013-11-18 14:07:29

标签: callback dart dart-js-interop

我正在将(2.0)js-interop库与JS库ImageLoaded结合使用,并且我遇到了FunctionProxy类,因为下面的代码抛出了错误:

突破异常:关闭调用参数不匹配:函数'call'

js.FunctionProxy loaded = new js.FunctionProxy((){
      print("called");
      js.Proxy pckry = new js.Proxy(context.Packery, container, options);
    });

js.Proxy img = new js.Proxy(context.imagesLoaded, container, loaded);

这很奇怪,因为我的js回调在应用程序崩溃之前被调用了5次。

1 个答案:

答案 0 :(得分:2)

查看imagesLoaded Usage 部分,看起来回调需要一个参数。所以你必须将这个参数添加到你的回调中:

js.FunctionProxy loaded = new js.FunctionProxy((instance) {
  print("called");
  js.Proxy pckry = new js.Proxy(context.Packery, container, options);
});

js.Proxy img = new js.Proxy(context.imagesLoaded, container, loaded);

附加说明:

  • 您可以避免new js.FunctionProxy。只有有限数量的案例需要它,而你的案例不是其中之一。
  • imagesLoaded可以用作函数,它简化了代码。

因此,您应该可以使用:

final img = context.imagesLoaded(container, (instance) {
  print("called");
  js.Proxy pckry = new js.Proxy(context.Packery, container, options);
});