dart 如何在flutter中打开本机文件资源管理器来定位目录?

v440hwme  于 9个月前  发布在  Flutter
关注(0)|答案(5)|浏览(291)

有没有办法调用本机文件资源管理器并获取选定的目录路径?

9rnv2umw

9rnv2umw1#

我也在寻找同样的东西,但找不到UI类型的插件,所以我构建了一个页面,或多或少是一个文件资源管理器。我利用flutter_file_manager插件获得所需目录中的文件列表,然后通过ListView.builder将(未来)列表返回到一系列ListTile中。

List<FileSystemEntity> _fileList;

Future<void> _loadFiles() async {
  _loadingFiles = true;

  var root = await getExternalStorageDirectory();
  _fileList = await FileManager(root: root).walk().toList();

  _loadingFiles = false;

  this.setState(() {});
}

字符串
一旦你有了_fileList对象,你就可以做任何你想做的事情了。例如,我在我的AppBar中添加了一个PopupMenuButton,在那里我允许文件删除,打开等。
对于_fileList列表中的每个项目,您还可以在ListTile中显示文件名,大小,修改日期等。

lokaqttq

lokaqttq2#

我没有找到一个官方的方法来做,所以我用了另外一种方法。我使用了库“path_provider“,通过“Directory”方法,例如通过“directory.list”方法获取目录中的文件。这样,你就可以遍历所有的目录和文件。然后写一个页面来显示目录,从而达到原生文件浏览的效果。还有,别忘了权限

_getSDCardDirectory() async {
  Directory directory = await getExternalStorageDirectory();
  print(directory.path);
  await directory.list().toList().then((filesList) => print(filesList));
  print(directory.parent.path);
}

字符串

mec1mxoz

mec1mxoz3#

在Kotlin/ java中编写一个方法,并通过MethodChannels从flutter调用它。如下所示启动本机文件管理器。

startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));

字符串
参考下面的链接,了解更多关于MethodChannels的信息

mrfwxfqh

mrfwxfqh4#

您可以尝试插件filesystem_picker,它支持移动的和桌面平台,并且在其最新的2.0+版本中支持nullsafety

import 'package:filesystem_picker/filesystem_picker.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

Directory rootPath = await getTemporaryDirectory();
String? path = await FilesystemPicker.open(title: 'Save to folder',
      context: context,
      rootDirectory: rootPath,
      fsType: FilesystemType.folder,
      pickText: 'Save file to this folder',
      folderIconColor: Colors.teal,
);

字符串

8aqjt8rx

8aqjt8rx5#

使用下面的代码。不需要软件包

import 'dart:io';

  void openDirectory(String path) {
Process.run(
  "explorer",
  [path],
  workingDirectory: path,
  );
}

字符串
这段代码执行一个shell命令(打开windows上的文件浏览器)。这将使您能够打开您想要的文件夹

相关问题