packageImportFromAbsolutePath function
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';
}