Saf

一个允许您使用原生文件资源管理器并使其用户能够轻松访问文档、图像和其他目录文件的软件包。

当前支持的功能

  • 使用操作系统默认的原生文件资源管理器
  • 访问隐藏的文件夹和文件
  • 访问目录
  • 将文件缓存在应用外部文件目录中
  • 将某些目录的文件与缓存的目录同步
  • 不同的默认类型过滤(媒体、图像、视频、音频或任何)
  • 支持Android

如果您有任何希望在此软件包中看到的功能,请随时提出建议。?

兼容性图表

API Android iOS Windows Linux macOS
getDirectoryPermission()
getFilesPath()
getCachedFilesPath()
cache()
singleCache()
clearCache()
syncWithCacheDir()
getPersistedPermissionDirectories()
releasePersistedPermissions()

有关更多详细信息,请参阅 Saf Wiki 的API部分或 pub.dev 上的官方API参考

文档

有关如何安装、设置和使用的所有详细信息,请参阅Saf Wiki

用法

快速简单用法示例

使用实例初始化 Saf

Saf saf = Saf(directoryPath: "~/some/path")

目录权限请求

bool? isGranted = await saf.getDirectoryPermission(isDynamic: false);

if (isGranted != null) {
  // Perform some file operations
} else {
  // User canceled the native explorer
}

获取已授权目录所有文件的路径

List<String>? paths = await saf.getFilesPath(FileType.media);

缓存已授权目录

List<String>? cachedFilesPath = await saf.cache();

获取缓存文件的路径

List<String>? cachedFilesPath = await saf.getCachedFilesPath();

缓存已授权目录的单个文件

String? path = await saf.singleCache(filePath: "~/some/path/file.type");

清除已授权目录的缓存

bool? isClear = await saf.clearCache();

将缓存目录与已授权目录同步

bool? isSynced = await saf.syncWithCacheDirectory();

释放当前已授权目录的持久化权限

bool? isReleased = await saf.releasePersistedPermission();

获取所有已授权目录的持久化权限路径列表

List<String>? paths = await Saf.getPersistedPermissionDirectories();
// Note: it is a static method

释放所有已授权目录的持久化权限

bool? isReleased = await Saf.releasePersistedPermissions();
// Note: it is a static method

有关完整的用法详情,请参阅上面的Wiki

示例应用

Android

Demo

入门

有关 Flutter 入门指南,请参阅我们的在线 文档

有关编辑插件代码的帮助,请查看文档

GitHub

查看 Github