私は、ダルチザンがSoundCloud JavaScript SDK ( http://developers.soundcloud.com/docs/api/sdks#javascript )を使いやすくするライブラリを書こうとしています。
「dart:js」ライブラリを使用しており、プロキシを処理するために 1 つのクラスのみを使用しています。
class SCproxy {
JsObject proxy = context['SC'];
String client_id;
SCproxy(this.client_id) {}
initialize() {
proxy.callMethod('initialize', [client_id]);
}
stream(String track_id){
var track = new JsObject(proxy.callMethod('stream',[track_id]));
print(track); // track should be the soundmanager2 object that we can call '.play' on.
}
これをホストしているレポは ( https://github.com/darkkiero/scproxy )
「ストリーム」メソッドを実行しようとすると、問題が発生します。
main() {
SCproxy SC = new SCproxy('Your SoundCloud API client_ID');
SC.initialize();
SC.stream('/tracks/111477464');
}
javascript 'SC.stream' メソッドによって返された soundmanager2 オブジェクトを取得して使用しようとすると、dart エディターで次の例外が発生します。
Breaking on exception: type 'ScriptElement' is not a subtype of type 'JsFunction' of 'constructor'.
「SC.stream」のコールバックを収集することで、soundmanager2 オブジェクトの dart JsObject を取得できるはずだという印象を受けていますが、方法はわかりません。しかし、「dart:js」を完全に誤用している可能性があります。それも有益な情報になります。