getDartBinVersion function

Future<Version?> getDartBinVersion()

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;
}