getRelativeImportUri function

String getRelativeImportUri(
  1. String imported,
  2. String file
)

Returns the relative import URI from a file to an imported file. e.g. lib/src/foo.dart -> lib/src/bar.dart -> ../bar.dart

Implementation

String getRelativeImportUri(String imported, String file) {
  final importedParts = imported.split('/');
  final fileParts = file.split('/');

  final commonParts = <String>[];
  for (var i = 0; i < importedParts.length; i++) {
    if (importedParts[i] != fileParts[i]) break;
    commonParts.add(importedParts[i]);
  }

  final relativeParts = <String>[];
  for (var i = 1; i < fileParts.length - commonParts.length; i++) {
    relativeParts.add('..');
  }

  final importedRelativeParts = importedParts.skip(commonParts.length);
  relativeParts.addAll(importedRelativeParts);

  final packageUri = relativeParts.join('/');
  return packageUri;
}