diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 5fc3d6c58fc..8e0d9e16848 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart @@ -502,6 +502,7 @@ class AppDomain extends Domain { String? isolateFilter, bool machine = true, String? userIdentifier, + bool enableDevTools = true, }) async { if (!await device.supportsRuntimeMode(options.buildInfo.mode)) { throw Exception( @@ -574,7 +575,7 @@ class AppDomain extends Domain { return runner.run( connectionInfoCompleter: connectionInfoCompleter, appStartedCompleter: appStartedCompleter, - enableDevTools: true, + enableDevTools: enableDevTools, route: route, ); }, diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 9cb22e3b01f..aad941a1e21 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -606,6 +606,7 @@ class RunCommand extends RunCommandBase { ipv6: ipv6 ?? false, multidexEnabled: boolArgDeprecated('multidex'), userIdentifier: userIdentifier, + enableDevTools: boolArgDeprecated(FlutterCommand.kEnableDevTools), ); } on Exception catch (error) { throwToolExit(error.toString()); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart index ecdac200c8a..b570fe4a8fc 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -523,6 +523,34 @@ void main() { Stdio: () => FakeStdio(), Logger: () => AppRunLogger(parent: BufferLogger.test()), }); + + testUsingContext('can disable devtools with --no-devtools', () async { + final DaemonCapturingRunCommand command = DaemonCapturingRunCommand(); + final FakeDevice device = FakeDevice(); + testDeviceManager.devices = [device]; + + await expectLater( + () => createTestCommandRunner(command).run([ + 'run', + '--no-pub', + '--no-devtools', + '--machine', + '-d', + device.id, + ]), + throwsToolExit(), + ); + expect(command.appDomain.enableDevTools, isFalse); + }, overrides: { + Artifacts: () => artifacts, + Cache: () => Cache.test(processManager: FakeProcessManager.any()), + DeviceManager: () => testDeviceManager, + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + Usage: () => usage, + Stdio: () => FakeStdio(), + Logger: () => AppRunLogger(parent: BufferLogger.test()), + }); }); }); @@ -1066,6 +1094,7 @@ class CapturingAppDomain extends AppDomain { bool? multidexEnabled; String? userIdentifier; + bool? enableDevTools; @override Future startApp( @@ -1085,9 +1114,11 @@ class CapturingAppDomain extends AppDomain { String? isolateFilter, bool machine = true, String? userIdentifier, + bool enableDevTools = true, }) async { this.multidexEnabled = multidexEnabled; this.userIdentifier = userIdentifier; + this.enableDevTools = enableDevTools; throwToolExit(''); } }