我以这种方式选择文件:
Future<String> getFile() {
final completer = new Completer<String>();
final InputElement input = document.createElement('input');
input
..type = 'file'
..accept = 'image/*';
input.onChange.listen((e) async {
final List<File> files = input.files;
final reader = new FileReader();
reader.readAsDataUrl(files[0]);
reader.onError.listen((error) => completer.completeError(error));
await reader.onLoad.first;
completer.complete(reader.result as String);
});
input.click();
return completer.future;
}
我通常会使用Image.file(...)
返回的窗口小部件来显示文件,但这会接受dart:io
文件,而不是dart:html
文件。在Flutter网站上显示dart:html
的最佳方法是什么?
作为一个奖励问题,浏览器是否存在已知限制?我担心此解决方案仅适用于Chrome。