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
入门
有关 Flutter 入门指南,请参阅我们的在线 文档。
有关编辑插件代码的帮助,请查看文档。
