5

Dart の環境フラグまたはターゲット プラットフォームに基づいてライブラリ/コードを条件付きでインポートする方法はありますか? dart:ioターゲットプラットフォームに基づいて、の ZLibDecoder / ZLibEncoder クラスと zlib.js を切り替えようとしています。

統一されたインターフェイスを作成する方法を説明する記事がありますが、重複コードを作成しない手法と、その重複コードをテストするための冗長なテストを視覚化できません。game_loop はこの手法を採用していますが、何も共有していないように見える個別のクラス (GameLoopHtml と GameLoopIsolate) を使用しています。

私のコードは次のようになります。

class Parser {
  Layer parse(String data) {
    List<int> rawBytes = /* ... */;
    /* stuff you don't care about */
    return new Layer(_inflateBytes(rawBytes));
  }
  String _inflateBytes(List<int> bytes) {
    // Uses ZLibEncoder on dartvm, zlib.js in browser
  }
}

2 つの別個のクラス (ParserHtml と ParserServer) を用意して、コードの重複を避けたいと思います_inflateBytes

編集: ここでの具体的な例: https://github.com/radicaled/citadel/blob/master/lib/tilemap/parser.dart。TMX (Tile Map XML) パーサーです。

4

2 に答える 2