Add flutter run support for linux and windows (#31229)
diff --git a/packages/flutter_tools/lib/src/windows/build_windows.dart b/packages/flutter_tools/lib/src/windows/build_windows.dart
new file mode 100644
index 0000000..d2aabfe
--- /dev/null
+++ b/packages/flutter_tools/lib/src/windows/build_windows.dart
@@ -0,0 +1,44 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file
+
+import '../base/common.dart';
+import '../base/io.dart';
+import '../base/logger.dart';
+import '../base/process_manager.dart';
+import '../build_info.dart';
+import '../cache.dart';
+import '../convert.dart';
+import '../globals.dart';
+import '../project.dart';
+
+/// Builds the Windows project through the project bat script.
+Future<void> buildWindows(WindowsProject windowsProject, BuildInfo buildInfo) async {
+ final Process process = await processManager.start(<String>[
+ windowsProject.buildScript.path,
+ Cache.flutterRoot,
+ buildInfo.isDebug ? 'debug' : 'release',
+ buildInfo?.trackWidgetCreation == true ? 'track-widget-creation' : 'no-track-widget-creation',
+ ], runInShell: true);
+ final Status status = logger.startProgress(
+ 'Building Windows application...',
+ timeout: null,
+ );
+ int result;
+ try {
+ process.stderr
+ .transform(utf8.decoder)
+ .transform(const LineSplitter())
+ .listen(printError);
+ process.stdout
+ .transform(utf8.decoder)
+ .transform(const LineSplitter())
+ .listen(printTrace);
+ result = await process.exitCode;
+ } finally {
+ status.cancel();
+ }
+ if (result != 0) {
+ throwToolExit('Build process failed');
+ }
+}