getFlutterVersion method
Implementation
Future<String?> getFlutterVersion() async {
try {
final result = await Process.run('flutter', ['--version']);
if (result.exitCode == 0) {
return result.stdout.toString().split('\n').first;
}
} catch (_) {}
try {
String? pathCandidate;
if (Platform.isWindows) {
final whereRes = await Process.run('where', ['flutter']);
if (whereRes.exitCode == 0) {
final out = whereRes.stdout.toString().trim();
if (out.isNotEmpty)
pathCandidate = out.split(RegExp(r'\r?\n')).first.trim();
}
} else {
final whichRes = await Process.run('which', ['flutter']);
if (whichRes.exitCode == 0) {
final out = whichRes.stdout.toString().trim();
if (out.isNotEmpty) pathCandidate = out.split('\n').first.trim();
}
}
if (pathCandidate != null && pathCandidate.isNotEmpty) {
final verRes = await Process.run(pathCandidate, ['--version']);
if (verRes.exitCode == 0)
return verRes.stdout.toString().split('\n').first;
}
} catch (_) {}
final pathEnv =
Platform.environment['PATH'] ?? Platform.environment['Path'] ?? '';
final separator = Platform.isWindows ? ';' : ':';
final entries = pathEnv.split(separator);
for (var entry in entries) {
final trimmed = entry.trim();
if (trimmed.isEmpty) continue;
final candidate = Platform.isWindows
? '${trimmed}${Platform.pathSeparator}flutter.bat'
: '${trimmed}${Platform.pathSeparator}flutter';
try {
final file = File(candidate);
if (file.existsSync()) {
final verRes = await Process.run(candidate, ['--version']);
if (verRes.exitCode == 0)
return verRes.stdout.toString().split('\n').first;
}
} catch (_) {}
}
return null;
}