You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中正确执行命令?Process.run调用全局命令失败求助

问题描述

我想用Dart的Process.run执行git clone、flutter build这类全局命令,编写了如下代码:

import 'dart:io';

void main() async {
  print('build start');
  // var res = await Process.run('git clone xxxx', []);
  var res = await Process.run('flutter build windows --dart-define=RunEnv=dist', []);
  print(res);
  print('build end');
}

运行后执行失败,报错信息如下:

Unhandled exception:
ProcessException: 系统找不到指定的文件。

  Command: flutter

为什么Dart的Process无法识别flutter、git这类全局命令?Node.js中很容易实现该操作,请问该如何解决?

解决方法

1. 正确拆分命令与参数

Process.run的第一个参数只需要传入命令本身,所有参数必须放到第二个参数的列表中,不能将完整命令串作为第一个参数传入。修正后的代码示例:

import 'dart:io';

void main() async {
  print('build start');
  // 执行flutter build命令
  var res = await Process.run(
    'flutter',
    ['build', 'windows', '--dart-define=RunEnv=dist'],
  );
  // 执行git clone命令示例
  // var gitRes = await Process.run('git', ['clone', 'xxxx']);
  print(res);
  print('build end');
}

2. 直接指定命令的完整路径(拆分后仍报错时)

如果拆分参数后依旧提示找不到命令,大概率是Dart进程未正确读取到系统环境变量,此时可以直接传入命令的完整可执行文件路径:

  • Windows系统示例:
var res = await Process.run(
  r'C:\flutter\bin\flutter.exe', // 替换为你本地flutter.exe的实际路径
  ['build', 'windows', '--dart-define=RunEnv=dist'],
);
  • macOS/Linux系统示例:
var res = await Process.run(
  '/usr/local/bin/flutter', // 替换为你本地flutter的实际路径
  ['build', 'windows', '--dart-define=RunEnv=dist'],
);

3. 验证并修复环境变量

先确认flutter、git的安装路径已添加到系统环境变量PATH中,同时验证Dart进程是否能读取到该环境变量:

print(Platform.environment['PATH']);

如果输出结果中没有包含flutter或git的路径,需先将对应路径添加到系统环境变量,再重启终端或IDE后重新运行Dart程序。另外,也可以先在终端中执行flutter --version、git --version,确认命令能正常执行后再运行Dart代码。

内容的提问来源于stack exchange,提问作者sanyanl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:05:19