我正在flutter-web上工作,我想在flutter-web中进行文件操作(读取和写入)。 对于Android和IOS,我使用的是path_provider依赖项。但是在flutter-web中不支持。
有人可以帮助我吗?一个例子会更有帮助。
谢谢
答案 0 :(得分:2)
在Flutter Web诞生之前,我为此专门创建了一个程序包。 https://pub.dev/packages/async_resource
它将内容视为网络资源(通常通过HTTP)或本地资源,例如文件,本地存储,服务工作者缓存或共享首选项。
这不是世界上最简单的事情,但它可以工作。
答案 1 :(得分:2)
接受的答案并不完全正确。是的,dart:io在网络上不可用,但是仍然可以读取文件。您可以通过系统的文件选择器选择一个文件,然后再读取。 一种“写入”文件的简单方法是向用户发送自动下载文件。
阅读:
使用该库选择文件:pub.dev/packages/file_picker(Web migration guide)
import 'dart:html' as webFile;
import 'package:file_picker_web/file_picker_web.dart' as webPicker;
if (kIsWeb) {
final webFile.File file = await webPicker.FilePicker.getFile(
allowedExtensions: ['pd'],
type: FileType.custom,
);
final reader = webFile.FileReader();
reader.readAsText(file);
await reader.onLoad.first;
String data = reader.result;
}
写(又称下载):
import 'dart:html' as webFile;
if (kIsWeb) {
var blob = webFile.Blob(["data"], 'text/plain', 'native');
var anchorElement = webFile.AnchorElement(
href: webFile.Url.createObjectUrlFromBlob(blob).toString(),
)..setAttribute("download", "data.txt")..click();
}
答案 2 :(得分:0)
在dart文档中已经进行了解释... dart:io无法用于Web构建...这意味着您不能直接访问Flutter Web中的系统文件。构建将会失败..您需要删除代码才能运行它
这是安全的事情.. js也不允许它..想像一个网站,如果您访问它就可以读取您的所有系统文件..这就是为什么不允许诸如路径读取或文件读取之类的原因..颤抖也一样
希望您有答案
答案 3 :(得分:0)
关于“ dart:indexed_db库”,您可以使用IndexedDB存储结构化数据,例如图像,数组和地图。 “ Window.localStorage”只能存储字符串。