如何在 Flutter 中添加文件选择器插件?

How to add a File Picker plugin in Flutter?

我正在创建一个 Flutter 项目,其中有一段数据 (JSON),我想将其导入和导出到用户想要的位置。为了实现这一点,我在 Flutter 中需要一个 File Picker 插件。现在,我在 Dart Packages 存储库中搜索 "file picker" 但没有找到。

有没有办法获得如下所示的文件选择器:

甚至这个...

我更喜欢第一个屏幕截图,因为它允许从不同来源(如云端硬盘)选择文件。

另外,因为我想导出数据,所以我可能也想要一个 Folder Picker。 ;)
但是,如果有任何其他替代文件夹选择器。我很高兴知道...

我和你完全一样,哈哈!

我注意到了 documents_picker 0.0.2。它允许用户选择多个文件,看起来很适合!

查看:https://pub.dartlang.org/packages/documents_picker#-readme-tab-

这是一个更好的文档选择器。它看起来像存储访问框架中的本机文档选择器,这就是您图片中的内容。 flutter_document_picker

我前一段时间创建了一个 file_picker 插件,以便可以选择(在 iOS 和 Android 上)绝对路径,然后用 Flutter 加载它.

您可以在这里查看:https://pub.dev/packages/file_picker

我使用 file_picker 库来选择文件。您也可以使用它来选择图像。

Future getPdfAndUpload(int position) async {

    File file = await FilePicker.getFile(
      type: FileType.custom,
      allowedExtensions: ['pdf','docx'], //here you can add any of extention what you need to pick
    );

    if(file != null) {

      setState(() {

          file1 = file; //file1 is a global variable which i created
     
      });

    }
  }

此处 file_picker flutter 库。

刚找到 FileSelector plugin from flutter.dev。与 MacOSWindowsWeb.

兼容

来自其 pub.dev 页面:

打开单个文件

final typeGroup = XTypeGroup(label: 'images', extensions: ['jpg', 'png']);
final file = await openFile(acceptedTypeGroups: [typeGroup]);

一次打开多个文件

final typeGroup = XTypeGroup(label: 'images', extensions: ['jpg', 'png']);
final files = await openFiles(acceptedTypeGroups: [typeGroup]);

正在保存文件

final path = await getSavePath();
final name = "hello_file_selector.txt";
final data = Uint8List.fromList("Hello World!".codeUnits);
final mimeType = "text/plain";
final file = XFile.fromData(data, name: name, mimeType: mimeType);
await file.saveTo(path);

MacOS:提供文件读取or/and写入权限

在目标 MacOS 上,请使用 Xcode:

提供足够的权限

如果您不提供文件读取 or/and 写入权限,调用

final XFile? file =
    await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);

都没有显示 returns.