有什么方法可以从Dart调用一个名为call()的JavaScript函数(在嵌套对象中),还是我必须等待Dart 2.0从中删除对call()的特殊处理?

我有一个像这样的JS代理:

@JS()
class SomethingFancy {
  external String call();
}

但是由于call()可用于将对象转换为功能,因此无法访问JS对象的功能。

如果可以的话,我将在Dart中更改方法的名称,但是package:js不支持该名称:

/// By default the dart name is used. It is not valid to specify a custom
/// [name] for class instance members.

我得到的错误是:
Uncaught Error: NoSuchMethodError: method not found: 'call$0' (J.getSomethingFancy$1$x(...).call$0 is not a function)
如果该函数不存在,则错误将如下所示:
Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)
同一对象上的其他功能也可以正常工作。

最佳答案

您可以在call前面加上JS$:

@JS()
class SomethingFancy {
  external String JS$call();
}
JS$可用作前缀,以允许访问与dart关键字冲突的JS名称。

关于dart - 如何从Dart调用名为 `call`的JavaScript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47657900/

10-16 00:54