collectFiles method

Future<void> collectFiles(
  1. Iterable<Directory> directories, {
  2. String suffix = '.dart',
})

Collects the list of Flutter source files to choose from and populates the files member.

Implementation

Future<void> collectFiles(Iterable<Directory> directories, {String suffix = '.dart'}) async {
  files = <File>[];
  for (final Directory directory in directories) {
    final List<File> foundDartFiles = <File>[];
    await for (FileSystemEntity entity in directory.list(recursive: true)) {
      if (entity is Directory || !entity.basename.endsWith(suffix)) {
        continue;
      }
      if (entity is Link) {
        final String resolvedPath = entity.resolveSymbolicLinksSync();
        if (!(await filesystem.isFile(resolvedPath))) {
          continue;
        }
        entity = filesystem.file(resolvedPath);
      }
      assert(entity is File);
      final File file = filesystem.file(entity.absolute.path);
      final File relativePath =
          filesystem.file(path.relative(file.path, from: directory.absolute.path));
      if (path.split(relativePath.path).contains('test')) {
        continue;
      }
      foundDartFiles.add(file);
    }
    files!.addAll(foundDartFiles);
  }
  notifyListeners();
}