getSdkPath function
Resolves the Dart SDK path for analyzer use, including when running as a compiled executable.
Implementation
String? getSdkPath() {
final envSdk = Platform.environment['DART_SDK'];
if (envSdk != null && envSdk.isNotEmpty && Directory(envSdk).existsSync()) {
return p.normalize(envSdk);
}
final flutterRoot = Platform.environment['FLUTTER_ROOT'];
if (flutterRoot != null && flutterRoot.isNotEmpty) {
final flutterSdk = p.join(flutterRoot, 'bin', 'cache', 'dart-sdk');
if (Directory(flutterSdk).existsSync()) {
return p.normalize(flutterSdk);
}
}
final executable = Platform.resolvedExecutable;
final executableName = p.basename(executable);
if (executableName == 'dart' || executableName == 'dart.exe') {
return p.normalize(p.dirname(p.dirname(executable)));
}
final dartOnPath = _dartExecutableOnPath();
if (dartOnPath != null) {
final binDir = p.dirname(dartOnPath);
final flutterCacheSdk = p.join(binDir, 'cache', 'dart-sdk');
if (Directory(flutterCacheSdk).existsSync()) {
return p.normalize(flutterCacheSdk);
}
if (p.basename(dartOnPath) == 'dart' || p.basename(dartOnPath) == 'dart.exe') {
return p.normalize(p.dirname(p.dirname(dartOnPath)));
}
}
return null;
}