findUsedAssetPaths method

Future<Set<String>> findUsedAssetPaths(
  1. String projectRoot
)

Finds all asset paths referenced in Dart code.

Implementation

Future<Set<String>> findUsedAssetPaths(String projectRoot) async {
  final usedPaths = <String>{};
  final dartFiles = await _findDartFiles(projectRoot);

  for (var i = 0; i < dartFiles.length; i += _concurrencyLimit) {
    final batch = dartFiles.skip(i).take(_concurrencyLimit).toList();

    final batchResults = await Future.wait(
      batch.map((file) async {
        try {
          final content = await file.readAsString();
          return _extractAssetPaths(content);
        } catch (_) {
          return <String>{};
        }
      }),
    );

    for (final paths in batchResults) {
      usedPaths.addAll(paths);
    }
  }

  return usedPaths;
}