1

JavaScript ライブラリ コンテナでの Google Dart オブジェクトの保存と取得

Dart アプリケーションでは、外部の JavaScript ライブラリを使用してさまざまな行列計算を行っています。

ライブラリの特定の機能は重要ではありません。重要なのは、マトリックスに配置した Dart オブジェクトを格納および取得する必要があることです。

Dart クラス- name というパラメーターを持つ dart オブジェクトを image i に持たせます

MyDartClass mydc = new MyDartClass(something, something);
mydc.name;
// Everything works as planned 

保管

matrix = js.context.matrix
matrix.cell(1,1).store("thing", new MyDartClass(something, something));

取得中

matrix.cell(1,1).has_object_of_type("thing");
// true
MyDartClass mydc = matrix.cell(1,1).retrieve("thing");

オブジェクトで何かをする

mydc.name;
// Exception: The null object does not have a getter 'name'.
// NoSuchMethodError : method not found: 'name'
// Receiver: null
// Arguments: []

図書館は本当に機能しているのか?
はい、そうです。私は純粋なjavascriptでまったく同じことを何度も行っており、動作をテストするためのテストがたくさんあります(Javascriptで)

ダーツは壊れていますか?
JavaScript化されたハッシュを使用して同じ動作をしようとすると、それは魅力のように機能します。

  var options = js.map({ 'dart' : new MyDartclass(something, something));
  var y = options["dart"];
  js.context.console.log(y.name);
  // Name is printed

リトリーブから何が得られますか?
ある種のDart Proxyを取得しているようです

    MyDartClass mydc = matrix.cell(1,1). retrieve("thing");
    js.context.console.log(mydc);

DartProxy {id: "dart-ref-20", port: DartSendPortSync}
id: "dart-ref-20"
port: DartSendPortSync
__proto__: DartProxy

ライブラリはオブジェクトをハッシュマップに深く格納していると思います。しかし、オブジェクトを Dart に取得すると、何かが得られるように見えますが、それを操作できる方法ではありません。どうすればいいのかわからないので、助けが必要です。

  • オブジェクトを非プロキシ化する必要がありますか?
  • オブジェクト内のハッシュからオブジェクトを取得しようとすると、おそらく Dart のバグです
  • おそらく、これが機能しないと思われることをすべて誤解していました。
4

1 に答える 1