packageImportFromAbsolutePath function

Future<String> packageImportFromAbsolutePath(
  1. String absolutePath
)

Implementation

Future<String> packageImportFromAbsolutePath(String absolutePath) async {
  final packageName = packageFromAbsolutePath(absolutePath);

  final packages = (await _loadPackageConfig()).packages;
  final p = packages.firstWhere((element) => element.name == packageName);

  // Get relative path after rootUri, stripping leading slash
  var relativePath = absolutePath.substring(p.rootUri.length);
  if (relativePath.startsWith('/')) {
    relativePath = relativePath.substring(1);
  }

  // Strip packageUri prefix (typically "lib/") since package: imports resolve through lib/ implicitly
  final packageUri = p.packageUri ?? 'lib/';
  if (relativePath.startsWith(packageUri)) {
    relativePath = relativePath.substring(packageUri.length);
  }

  return 'package:$packageName/$relativePath';
}