6

私は Dart を使用するのは初めてで、svg で動作する JavaScript コードをいくつか移植しようとして、いくつかのセグメントを含むパスを作成しましたが、その API がどのように機能するかを理解するのに苦労しています.

次のコードは実行されませんが、おそらく私がやりたいことを示しています。

Element i = query("#divsvg");
svg.SvgSvgElement s = new svg.SvgSvgElement();
i.append(s);

svg.PathElement p = new svg.PathElement();
p.pathSegList.add(
      p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
   );

s.children.add(p);

ただし、ドキュメントから理解できる限り:

  • createSvgPathSegArcAbs は、親のないパス セグメントを作成します
  • pathSegList は final であるため、構築後に追加することはできません
  • PathElement コンストラクターは引数を取らないようです

Dart の仕組みや svg ライブラリのドキュメントに何か欠けていますか? ドキュメント、グーグル、テストを見て数時間を費やしましたが、これをカバーしていると思われるものは何も見つかりませんでした (テストは、API ではなく HTML コードを使用して何かを作成しているようです)。

私を正しい方向に向けてくれるものは何でも大歓迎です!

アップデート

私は関数を調べるのにより多くの時間を費やしました.pathSegListの「ファイナリティ」は、それが変更されるのを妨げるべきではなく(constではありません)、単に置き換えられました.

ただし、"add" などのさまざまな関数は、呼び出そうとすると例外を除いて明示的に実装されますが、いくつかの関数 (append など) はネイティブに実装されます。

デバッガによると:

p.pathSegList.append(
    p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
);

パス セグメントを追加しますが、これは 'innerHTML' 属性にも最終ページの HTML にも存在しません...

私は、svg サポートは単純に「完成」していないと考え始めており、canvas や WebGL に移植することに少し誘惑されています。

4

1 に答える 1