collectFiles method
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();
}