scanFolder static method

Future<List<UMediaSource>> scanFolder(
  1. String directoryPath, {
  2. bool recursive = true,
  3. int limit = 20000,
})

Implementation

static Future<List<UMediaSource>> scanFolder(String directoryPath, {bool recursive = true, int limit = 20000}) async {
  if (kIsWeb) return const <UMediaSource>[];
  final Directory directory = Directory(directoryPath);
  final List<UMediaSource> result = <UMediaSource>[];
  try {
    await for (final FileSystemEntity entity in directory.list(recursive: recursive, followLinks: false)) {
      if (entity is! File) continue;
      final String lower = entity.path.toLowerCase();
      final int dot = lower.lastIndexOf(".");
      if (dot < 0 || !audioExtensions.contains(lower.substring(dot))) continue;
      result.add(UMediaSource.file(entity.path));
      if (result.length >= limit) break;
    }
  } on FileSystemException {
    return result;
  }
  result.sort((UMediaSource a, UMediaSource b) => a.id.compareTo(b.id));
  return result;
}