在 Flutter Web 中读写文件

Yog*_*esh 9 dart flutter flutter-web

我正在研究 flutter-web,我想在 flutter-web 中进行文件操作(读取和写入)。对于 Android 和 IOS,我使用的是 path_provider 依赖项。但是在 flutter-web 中它不受支持。

谁能帮我这个。一个例子会更有帮助。

谢谢

Dav*_*ers 14

接受的答案并不完全正确。是的,dart:io 在网络上不可用,但仍然可以读取文件。您可以通过系统的文件选择器选择一个文件,然后再阅读。“写入”文件的一个简单选项是向用户发送自动下载。

阅读
使用此库选择文件:pub.dev/packages/file_pickerWeb 迁移指南

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;
}
Run Code Online (Sandbox Code Playgroud)

(又名下载):

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();
}
Run Code Online (Sandbox Code Playgroud)


小智 13

在 dart 文档中已经解释过... dart:io 不适用于 Web 构建...这意味着您无法直接访问 flutter web 中的系统文件。构建将失败..您需要删除代码才能运行它

这是一个安全问题.. js 也不允许这样做.. 想象一个网站,如果您访问它,它可以读取您的所有系统文件.. 这就是为什么不允许进行路径读取或文件读取之类的事情.. 它是一样的扑

希望你能得到答案