2012-11-04 19 views
3

我试着用一段dart代码创建一个带有HTML5文件API的文件。该代码在某些飞镖幻灯片上找到,稍微固定以便能够在M1下运行。我正在使用最新的Dart SDK 0.2.1.2_r14167。代码很简单(我也试着用最后两个参数(回调函数)设置相同的结果来调用它)。Dart的带有'options'参数的DirectoryEntry.getFile抛出NoSuchMethodError

import 'dart:html'; 

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

它抛出:

Exception: NoSuchMethodError: incorrect number of arguments passed to method named 'getFile' Receiver: Instance of '[email protected]' Tried calling: getFile("log.txt", Instance of 'LinkedHashMapImplementation', null, null) Found: getFile(path, options, successCallback, errorCallback) Stack Trace: #0 Object.noSuchMethod (dart:core-patch:772:3)

我做得不对或SDK是坏了?

回答

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); 
    }); 
    }); 
} 

它使用named parametersgetFile签名是:

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

所以,如果你仔细看,第一个参数是强制性的,但只要你用他们的名字来指定它们,其余的都不是可以按任何顺序指定的。

如果你还在迷茫,阅读有关named parameters

+0

啊哈!你是对的,我怀疑有一些关于花括号的东西,但是在阅读他们的文档后推断出它们是可选的。 – rgripper

相关问题