Dart 省道';带有';选项';参数抛出NoSuchMethodError

Dart 省道';带有';选项';参数抛出NoSuchMethodError,dart,html5-filesystem,Dart,Html5 Filesystem,我尝试使用一段dart代码创建一个带有HTML5文件API的文件。该代码出现在一些dart幻灯片上,稍加修改,可以在M1下运行。我正在使用最新的Dart SDK 0.2.1.2R14167。代码很简单(我还尝试用最后两个参数(回调)调用它,结果相同) 它抛出: 异常:NoSuchMethodError:传递给的参数数不正确 名为“getFile”Receiver的方法:的实例 '_DirectoryEntryImpl@0x33cc944a'尝试调用:getFile(“log.txt”, “Lin

我尝试使用一段dart代码创建一个带有HTML5文件API的文件。该代码出现在一些dart幻灯片上,稍加修改,可以在M1下运行。我正在使用最新的Dart SDK 0.2.1.2R14167。代码很简单(我还尝试用最后两个参数(回调)调用它,结果相同)

它抛出:

异常:NoSuchMethodError:传递给的参数数不正确 名为“getFile”Receiver的方法:的实例 '_DirectoryEntryImpl@0x33cc944a'尝试调用:getFile(“log.txt”, “LinkedHashMapImplementation”的实例,null, null)找到:getFile(路径、选项、successCallback、errorCallback) 堆栈跟踪:#0 Object.noSuchMethod(dart:core patch:772:3)


是我做错了什么,还是SDK坏了?

是的,你基本上做错了,但我不会责怪你,因为即使是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});
因此,如果您仔细观察,第一个参数是必需的,但其余参数不是,事实上可以按任意顺序指定,只要您通过名称指定它们


如果您仍然感到困惑,请阅读。

啊哈!你是对的,我怀疑有关于花括号的事情,但在阅读了他们的文档后,推断给它们命名是可选的。
void getFile(String path, {Map options, EntryCallback successCallback, ErrorCallback errorCallback});