listFiles function

Future<List<File>> listFiles(
  1. String path, {
  2. List<String>? extensions,
  3. dynamic followsLinks = false,
  4. dynamic excludeHidden = false,
  5. FlutterFileUtilsSorting? sortedBy,
  6. bool reversed = false,
})

This function returns files' paths list only from specific location.

  • You may specify the types of the files you want to get by supplying the optional extensions.
  • sortedBy: FlutterFileUtilsSorting
  • bool reversed: in case parameter sortedBy is used

Implementation

Future<List<File>> listFiles(String path,
    {List<String>? extensions,
    followsLinks = false,
    excludeHidden = false,
    FlutterFileUtilsSorting? sortedBy,
    bool reversed: false}) async {
  List<File> files = [];

  try {
    List contents =
        Directory(path).listSync(followLinks: followsLinks, recursive: false);
    if (extensions != null) {
      // Future<List<String>> extensionsPatterns =
      //     RegexTools.makeExtensionPatterns(extensions);
      for (var fileOrDir in contents) {
        if (fileOrDir is File) {
          String file = pathlib.normalize(fileOrDir.path);
          for (var extension in extensions) {
            if (pathlib.extension(file).replaceFirst(".", "") ==
                extension.replaceFirst('.', '')) {
              if (excludeHidden) {
                if (file.startsWith('.'))
                  files.add(File(pathlib.normalize(fileOrDir.absolute.path)));
              } else {
                files.add(File(pathlib.normalize(fileOrDir.absolute.path)));
              }
            }
          }
        }
      }
    } else {
      for (var fileOrDir in contents) {
        if (fileOrDir is File) {
          files.add(File(pathlib.normalize(fileOrDir.absolute.path)));
        }
      }
    }
  } catch (error) {
    throw FileManagerError(error.toString());
  }
  if (files != null) {
    return sortBy(files, sortedBy, reversed: reversed) as FutureOr<List<File>>;
  }

  return files;
}