Flutter Dart如何在使用Process.run时隐藏cmd?

Flutter Dart如何在使用Process.run时隐藏cmd?,flutter,dart,Flutter,Dart,构建Dart应用程序后,函数Process.run开始打开一个可见的cmd,持续两天 final bool checkEnvironment = environment == ShellEnvironment.powershell; ProcessResult result = await Process.run( checkEnvironment ? 'powershell' : command, checkEnvironment ? [command] : args, runIn

构建Dart应用程序后,函数Process.run开始打开一个可见的cmd,持续两天

final bool checkEnvironment = environment == ShellEnvironment.powershell;
ProcessResult result = await Process.run(
  checkEnvironment ? 'powershell' : command,
  checkEnvironment ? [command] : args,
  runInShell: checkEnvironment,
);
链接示例(gif):对于每个命令,它都会打开一个新的cmd窗口

如果我用idea(不是构建版本)启动应用程序,这样的事情就不会发生

还尝试了此版本-仍然存在相同的问题:

final bool checkEnvironment = environment == ShellEnvironment.powershell;
ProcessResult result = await Process.run(
  'start',
   checkEnvironment ? ['/min', 'powershell', '-command', command] : ['/min', 'cmd', '/c', command],
   runInShell: true,
);
发现一篇文章说runInShell创建了一个新窗口,所以我删除了它,但结果还是一样的

final bool checkEnvironment = environment == ShellEnvironment.powershell;
ProcessResult result = await Process.run(
  checkEnvironment ? 'powershell.exe' : 'cmd',
  checkEnvironment ? ['-command', command] : ['/c', command],
);

在windows/runner/resources/main.cpp中更改main.cpp可以解决此问题:

if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
      CreateAndAttachConsole();
  } else {
    STARTUPINFO si = { 0 };
    si.cb = sizeof(si);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;

    PROCESS_INFORMATION pi = { 0 };
    WCHAR lpszCmd[MAX_PATH] = L"cmd.exe";
    if (::CreateProcess(NULL, lpszCmd, NULL, NULL, FALSE, CREATE_NEW_CONSOLE | CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
      do {
        if (::AttachConsole(pi.dwProcessId)) {
          ::TerminateProcess(pi.hProcess, 0);
          break;
        }
      } while (ERROR_INVALID_HANDLE == GetLastError());
      ::CloseHandle(pi.hProcess);
      ::CloseHandle(pi.hThread);
    }
  }

运行控制台模式程序时,显示控制台窗口是Windows上的正常行为。对于PowerShell,可能可以帮助您。如果您正在尝试执行
.bat
/
.cmd
脚本,那么或者可能会有帮助。这些都没有帮助