getDartBinVersion function
Parse dart version, do not throw
Implementation
Future<Version?> getDartBinVersion() async {
// $ dart --version
// Linux: Dart VM version: 2.7.0 (Unknown timestamp) on "linux_x64"
var result = await Shell(
options: ShellOptions(verbose: false, throwOnError: false),
).runCommand(ShellCommand('dart', ['--version']));
// Take from stderr first
var version = parseDartBinVersionOutput(result.stderr.toString().trim());
// Take stdout in case it changes
version ??= parseDartBinVersionOutput(result.stdout.toString().trim());
return version;
}