3

HTML5ファイルAPIでファイルを作成するダーツコードを使ってみました。コードはいくつかの dart スライドで見つかり、M1 で実行できるようにわずかに修正されました。最新の Dart SDK 0.2.1.2_r14167 を使用しています。コードは単純です (最後の 2 つのパラメーター (コールバック) を同じ結果に設定して呼び出すことも試みました)。

import 'dart:html';

void main() {
  window.webkitRequestFileSystem(LocalWindow.TEMPORARY, 50*1024*1024, (fs) {
    fs.root.getFile('log.txt', {"create": true}, null, null);
  });
}

それはスローします:

例外: NoSuchMethodError: 'getFile' という名前のメソッドに渡された引数の数が正しくありません レシーバー: '_DirectoryEntryImpl@0x33cc944a' のインスタンス 呼び出しを試みました: getFile("log.txt", 'LinkedHashMapImplementation' のインスタンス, null, null) 検出: getFile(path 、オプション、successCallback、errorCallback) スタック トレース: #0 Object.noSuchMethod (dart:core-patch:772:3)

何か間違ったことをしているのですか、それとも SDK が壊れていますか?

4

1 に答える 1

2

はい、あなたは基本的に間違っていますが、IDEでさえあなたがやっているようにしているように見えるので、私はあなたを責めません!

適切に行う方法は次のとおりです。

import 'dart:html';

void main() {
  window.webkitRequestFileSystem(LocalWindow.TEMPORARY, 50*1024*1024, (DOMFileSystem fs) {
    fs.root.getFile('log.txt', options: {'create': true}, successCallback: (FileEntry e) {
      print(e.fullPath);
    });
  });
}

名前付きパラメーターを使用し、署名getFileは次のとおりです。

void getFile(String path, {Map options, EntryCallback successCallback, ErrorCallback errorCallback});

したがって、注意深く見ると、最初のパラメーターは必須ですが、残りはそうではなく、名前で指定する限り、実際には任意の順序で指定できます。

それでも混乱する場合は、名前付きパラメーターについて読んでください。

于 2012-11-04T21:39:11.653 に答える