pickFolder static method

Future<FcFilePickerPath?> pickFolder({
  1. required bool writePermission,
})

Picks a folder and return a FcFilePickerXResult. If the user cancels the picker, it returns null.

writePermission is only applicable on Android.

Implementation

static Future<FcFilePickerPath?> pickFolder(
    {required bool writePermission}) async {
  if (Platform.isAndroid) {
    final res =
        await _safUtil.pickDirectory(writePermission: writePermission);
    if (res == null) {
      return null;
    }
    return FcFilePickerPath.fromUri(res.name, res.uri);
  }
  if (Platform.isIOS) {
    final iosPicker = IosDocumentPicker();
    final res =
        (await iosPicker.pick(IosDocumentPickerType.directory))?.first;
    if (res == null) {
      return null;
    }
    return FcFilePickerPath.fromPathAndUri(res.name, res.path, res.url);
  }
  if (Platform.isMacOS) {
    final macosPicker = MacosFilePicker();
    final res = (await macosPicker.pick(MacosFilePickerMode.folder))?.first;
    if (res == null) {
      return null;
    }
    return FcFilePickerPath.fromPathAndUri(res.name, res.path, res.url);
  }

  final folderPath = await getDirectoryPath();
  if (folderPath == null) {
    return null;
  }
  final folderName = p.basename(folderPath);
  return FcFilePickerPath.fromPath(folderName, folderPath);
}