【问题标题】:Closure call with mismatched arguments: function 'call'参数不匹配的闭包调用:函数“调用”
【发布时间】:2013-12-01 17:16:54
【问题描述】:

我将 (2.0)js-interop 库与 JS 库 ImageLoaded 结合使用,我被困在 FunctionProxy 类中,因为下面的代码会引发以下错误:

异常中断:参数不匹配的闭包调用:函数“调用”

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 次。

【问题讨论】:

    标签: callback dart dart-js-interop


    【解决方案1】:

    查看imagesLoadedUsage 部分,看起来回调采用了一个参数。所以你必须将此参数添加到你的回调中:

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

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 2021-12-09
      • 2021-12-10
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多