getDartVersionSync static method
Returns the installed Dart SDK version string or a sensible fallback.
Runs dart --version and parses the output to extract a semantic
version (major.minor.patch). If detection fails this returns the
fallback ^3.6.0 which is used by the CLI as the minimum supported SDK.
Returns:
- String: detected version (e.g.
3.10.8) or the fallback^3.6.0.
Throws:
- Exception when a version is detected but is lower than 3.6.0.
Implementation
static String getDartVersionSync() {
const minimumVersion = '^3.6.0';
try {
print('🔍 Checking Dart version...');
final result = Process.runSync('dart', ['--version']);
if (result.exitCode != 0) return minimumVersion;
final out = '${result.stdout}\n${result.stderr}';
final match =
RegExp(
r'Dart\s+SDK\s+version:\s*([0-9]+(?:\.[0-9]+)*)',
caseSensitive: false,
).firstMatch(out) ??
RegExp(
r'Dart\s+([0-9]+(?:\.[0-9]+)*)',
caseSensitive: false,
).firstMatch(out);
if (match != null) {
final version = match.group(1)!;
_validateDartVersion(version);
print('✅ Dart version: $version');
return version;
}
print('✅ Dart version: $minimumVersion');
return minimumVersion;
} catch (_) {
return minimumVersion;
}
}