resolveFragmentsBasePath static method
Resolves the fragments directory path using package and script path resolution.
Implementation
static Future<String> resolveFragmentsBasePath() async {
// 1. Current working directory
final cwdFragments =
Directory(p.join(Directory.current.path, 'templates', '_fragments'));
if (cwdFragments.existsSync()) {
return cwdFragments.path;
}
// 2. Package URI resolution
try {
final packageLibUri =
await Isolate.resolvePackageUri(Uri.parse('package:flutter_setup/'));
if (packageLibUri != null && packageLibUri.scheme == 'file') {
final packageRoot = p.dirname(packageLibUri.toFilePath());
final pkgFragments =
Directory(p.join(packageRoot, 'templates', '_fragments'));
if (pkgFragments.existsSync()) {
return pkgFragments.path;
}
}
} catch (_) {}
// 3. Executable script path fallback
try {
if (Platform.script.scheme == 'file') {
final scriptDir = p.dirname(Platform.script.toFilePath());
final scriptFragments =
Directory(p.join(scriptDir, '../templates', '_fragments'));
if (scriptFragments.existsSync()) {
return scriptFragments.path;
}
}
} catch (_) {}
return p.join(Directory.current.path, 'templates', '_fragments');
}