在 Flutter Web 中读写文件
To read and Write File in Flutter Web
我在flutter-web上工作,我想在flutter-web中做文件操作(读写)。
对于 Android 和 IOS,我使用了 path_provider 依赖项。但是在flutter-web中是不支持的。
谁能帮我解决这个问题。举个例子会更有帮助。
谢谢
在 dart 文档中已经解释了...dart:io 不适用于 web 构建...这意味着您无法直接访问 flutter web 中的系统文件。构建将失败。您需要删除代码才能 运行 它
这是一个安全问题..js 也不允许这样做..想象一个网站,如果您访问它可以读取您的所有系统文件..这就是为什么不允许路径读取或文件读取之类的原因。 . flutter 也一样
希望你有答案
在 Flutter web 出现之前,我专门为此创建了一个包。 https://pub.dev/packages/async_resource
它将事物视为网络资源(通常通过 HTTP)或本地资源,例如文件、本地存储、服务工作者缓存或共享首选项。
这不是世界上最简单的事情,但它确实有效。
"dart:indexed_db library"呢,您可以使用 IndexedDB 存储结构化数据,例如图像、数组和地图。 "Window.localStorage"只能存储字符串。
接受的答案并不完全正确。是的,dart:io 在网络上不可用,但仍然可以读取文件。您可以通过系统的文件选择器 select 一个文件,然后再阅读它。
“写入”文件的一个简单选项是向用户发送 auto-download.
阅读:
使用此库 select 文件: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;
}
写入(a.k.a下载):
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();
}
我在flutter-web上工作,我想在flutter-web中做文件操作(读写)。 对于 Android 和 IOS,我使用了 path_provider 依赖项。但是在flutter-web中是不支持的。
谁能帮我解决这个问题。举个例子会更有帮助。
谢谢
在 dart 文档中已经解释了...dart:io 不适用于 web 构建...这意味着您无法直接访问 flutter web 中的系统文件。构建将失败。您需要删除代码才能 运行 它
这是一个安全问题..js 也不允许这样做..想象一个网站,如果您访问它可以读取您的所有系统文件..这就是为什么不允许路径读取或文件读取之类的原因。 . flutter 也一样
希望你有答案
在 Flutter web 出现之前,我专门为此创建了一个包。 https://pub.dev/packages/async_resource
它将事物视为网络资源(通常通过 HTTP)或本地资源,例如文件、本地存储、服务工作者缓存或共享首选项。
这不是世界上最简单的事情,但它确实有效。
"dart:indexed_db library"呢,您可以使用 IndexedDB 存储结构化数据,例如图像、数组和地图。 "Window.localStorage"只能存储字符串。
接受的答案并不完全正确。是的,dart:io 在网络上不可用,但仍然可以读取文件。您可以通过系统的文件选择器 select 一个文件,然后再阅读它。 “写入”文件的一个简单选项是向用户发送 auto-download.
阅读:
使用此库 select 文件: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;
}
写入(a.k.a下载):
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();
}