Is there any way to call a JavaScript function named call()
(in a nested object) from Dart or do I have to wait for Dart 2.0 from which the special handling of call()
might get removed?
I have a JS Proxy like:
@JS()
class SomethingFancy {
external String call();
}
But as call()
can be used to turn an object into a function, it makes it impossible to access the function of the JS object.
If I could, I would change the name of the method in Dart, but that's not supported by package:js
:
/// By default the dart name is used. It is not valid to specify a custom
/// [name] for class instance members.
The error I get is:
Uncaught Error: NoSuchMethodError: method not found: 'call$0' (J.getSomethingFancy$1$x(...).call$0 is not a function)
If the function didn't exist, the error would look like this:
Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)
Other functions on the same object work just fine.
You can prefix call
with JS$
:
@JS()
class SomethingFancy {
external String JS$call();
}
JS$
can be used as prefix to allow to access to JS names that conflicts with dart keywords.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With