diff --git a/packages/flutter_tools/doc/daemon.md b/packages/flutter_tools/doc/daemon.md index a4be2839378..52cd06daf0c 100644 --- a/packages/flutter_tools/doc/daemon.md +++ b/packages/flutter_tools/doc/daemon.md @@ -109,7 +109,7 @@ The `stop()` command takes one parameter, `appId`. It returns a `bool` to indica #### app.start -This is sent when an app is starting. The `params` field will be a map with the fields `appId`, `directory`, and `deviceId`. +This is sent when an app is starting. The `params` field will be a map with the fields `appId`, `directory`, `deviceId`, and `launchMode`. #### app.debugPort diff --git a/packages/flutter_tools/lib/src/commands/attach.dart b/packages/flutter_tools/lib/src/commands/attach.dart index 732c0cd0f52..6a354e53b26 100644 --- a/packages/flutter_tools/lib/src/commands/attach.dart +++ b/packages/flutter_tools/lib/src/commands/attach.dart @@ -221,6 +221,7 @@ class AttachCommand extends FlutterCommand { null, true, fs.currentDirectory, + LaunchMode.attach, ); } catch (error) { throwToolExit(error.toString()); diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index d799e347bd5..a6320281477 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -400,6 +400,7 @@ class AppDomain extends Domain { projectDirectory, enableHotReload, cwd, + LaunchMode.run, ); } @@ -409,7 +410,8 @@ class AppDomain extends Domain { Device device, String projectDirectory, bool enableHotReload, - Directory cwd) async { + Directory cwd, + LaunchMode launchMode) async { final AppInstance app = AppInstance(_getNewAppId(), runner: runner, logToStdout: daemon.logToStdout); _apps.add(app); @@ -417,6 +419,7 @@ class AppDomain extends Domain { 'deviceId': device.id, 'directory': projectDirectory, 'supportsRestart': isRestartSupported(enableHotReload, device), + 'launchMode': launchMode.toString(), }); Completer connectionInfoCompleter; @@ -1021,3 +1024,19 @@ class LogMessage { final String message; final StackTrace stackTrace; } + +/// The method by which the flutter app was launched. +class LaunchMode { + const LaunchMode._(this._value); + + /// The app was launched via `flutter run`. + static const LaunchMode run = LaunchMode._('run'); + + /// The app was launched via `flutter attach`. + static const LaunchMode attach = LaunchMode._('attach'); + + final String _value; + + @override + String toString() => _value; +} diff --git a/packages/flutter_tools/tool/daemon_client.dart b/packages/flutter_tools/tool/daemon_client.dart index a05cc99a6df..9acd3b29bef 100644 --- a/packages/flutter_tools/tool/daemon_client.dart +++ b/packages/flutter_tools/tool/daemon_client.dart @@ -42,7 +42,8 @@ Future main() async { 'method': 'app.start', 'params': { 'deviceId': words[1], - 'projectDirectory': words[2] + 'projectDirectory': words[2], + 'launchMode': words[3], } }); } else if (words.first == 'stop') {