@@ -12,14 +12,17 @@ import '../base/common.dart';
1212import '../base/context.dart' ;
1313import '../base/file_system.dart' ;
1414import '../base/io.dart' ;
15+ import '../base/logger.dart' ;
16+ import '../base/platform.dart' ;
17+ import '../base/signals.dart' ;
18+ import '../base/terminal.dart' ;
1519import '../build_info.dart' ;
1620import '../commands/daemon.dart' ;
1721import '../compile.dart' ;
1822import '../daemon.dart' ;
1923import '../device.dart' ;
2024import '../device_port_forwarder.dart' ;
2125import '../fuchsia/fuchsia_device.dart' ;
22- import '../globals.dart' as globals;
2326import '../ios/devices.dart' ;
2427import '../ios/simulators.dart' ;
2528import '../macos/macos_ipad_device.dart' ;
@@ -58,7 +61,26 @@ import '../vmservice.dart';
5861/// To attach to a flutter mod running on a fuchsia device, `--module` must
5962/// also be provided.
6063class AttachCommand extends FlutterCommand {
61- AttachCommand ({bool verboseHelp = false , this .hotRunnerFactory}) {
64+ AttachCommand ({
65+ bool verboseHelp = false ,
66+ HotRunnerFactory ? hotRunnerFactory,
67+ required Artifacts ? artifacts,
68+ required Stdio stdio,
69+ required Logger logger,
70+ required Terminal terminal,
71+ required Signals signals,
72+ required Platform platform,
73+ required ProcessInfo processInfo,
74+ required FileSystem fileSystem,
75+ }): _artifacts = artifacts,
76+ _hotRunnerFactory = hotRunnerFactory ?? HotRunnerFactory (),
77+ _stdio = stdio,
78+ _logger = logger,
79+ _terminal = terminal,
80+ _signals = signals,
81+ _platform = platform,
82+ _processInfo = processInfo,
83+ _fileSystem = fileSystem {
6284 addBuildModeFlags (verboseHelp: verboseHelp, defaultToRelease: false , excludeRelease: true );
6385 usesTargetOption ();
6486 usesPortOptions (verboseHelp: verboseHelp);
@@ -117,10 +139,17 @@ class AttachCommand extends FlutterCommand {
117139 addDdsOptions (verboseHelp: verboseHelp);
118140 addDevToolsOptions (verboseHelp: verboseHelp);
119141 usesDeviceTimeoutOption ();
120- hotRunnerFactory ?? = HotRunnerFactory ();
121142 }
122143
123- HotRunnerFactory ? hotRunnerFactory;
144+ final HotRunnerFactory _hotRunnerFactory;
145+ final Artifacts ? _artifacts;
146+ final Stdio _stdio;
147+ final Logger _logger;
148+ final Terminal _terminal;
149+ final Signals _signals;
150+ final Platform _platform;
151+ final ProcessInfo _processInfo;
152+ final FileSystem _fileSystem;
124153
125154 @override
126155 final String name = 'attach' ;
@@ -221,7 +250,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
221250 throwToolExit ('Did not find any valid target devices.' );
222251 }
223252
224- final Artifacts ? overrideArtifacts = device.artifactOverrides ?? globals.artifacts ;
253+ final Artifacts ? overrideArtifacts = device.artifactOverrides ?? _artifacts ;
225254 await context.run <void >(
226255 body: () => _attachToDevice (device),
227256 overrides: < Type , Generator > {
@@ -238,12 +267,12 @@ known, it can be explicitly provided to attach via the command-line, e.g.
238267 final Daemon ? daemon = boolArgDeprecated ('machine' )
239268 ? Daemon (
240269 DaemonConnection (
241- daemonStreams: DaemonStreams .fromStdio (globals.stdio , logger: globals.logger ),
242- logger: globals.logger ,
270+ daemonStreams: DaemonStreams .fromStdio (_stdio , logger: _logger ),
271+ logger: _logger ,
243272 ),
244- notifyingLogger: (globals.logger is NotifyingLogger )
245- ? globals.logger as NotifyingLogger
246- : NotifyingLogger (verbose: globals.logger. isVerbose, parent: globals.logger ),
273+ notifyingLogger: (_logger is NotifyingLogger )
274+ ? _logger as NotifyingLogger
275+ : NotifyingLogger (verbose: _logger. isVerbose, parent: _logger ),
247276 logToStdout: true ,
248277 )
249278 : null ;
@@ -296,9 +325,9 @@ known, it can be explicitly provided to attach via the command-line, e.g.
296325 ipv6: ipv6! ,
297326 devicePort: deviceVmservicePort,
298327 hostPort: hostVmservicePort,
299- logger: globals.logger ,
328+ logger: _logger ,
300329 );
301- globals .printStatus ('Waiting for a connection from Flutter on ${device .name }...' );
330+ _logger .printStatus ('Waiting for a connection from Flutter on ${device .name }...' );
302331 observatoryUri = observatoryDiscovery.uris;
303332 // Determine ipv6 status from the scanned logs.
304333 usesIpv6 = observatoryDiscovery.ipv6;
@@ -316,7 +345,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
316345 ).asBroadcastStream ();
317346 }
318347
319- globals.terminal .usesTerminalUi = daemon == null ;
348+ _terminal .usesTerminalUi = daemon == null ;
320349
321350 try {
322351 int ? result;
@@ -343,9 +372,9 @@ known, it can be explicitly provided to attach via the command-line, e.g.
343372 device,
344373 null ,
345374 true ,
346- globals.fs .currentDirectory,
375+ _fileSystem .currentDirectory,
347376 LaunchMode .attach,
348- globals.logger as AppRunLogger ,
377+ _logger as AppRunLogger ,
349378 );
350379 } on Exception catch (error) {
351380 throwToolExit (error.toString ());
@@ -366,10 +395,10 @@ known, it can be explicitly provided to attach via the command-line, e.g.
366395 unawaited (onAppStart.future.whenComplete (() {
367396 terminalHandler = TerminalHandler (
368397 runner,
369- logger: globals.logger ,
370- terminal: globals.terminal ,
371- signals: globals.signals ,
372- processInfo: globals.processInfo ,
398+ logger: _logger ,
399+ terminal: _terminal ,
400+ signals: _signals ,
401+ processInfo: _processInfo ,
373402 reportReady: boolArgDeprecated ('report-ready' ),
374403 pidFile: stringArgDeprecated ('pid-file' ),
375404 )
@@ -389,7 +418,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
389418 if (runner.exited || ! runner.isWaitingForObservatory) {
390419 break ;
391420 }
392- globals .printStatus ('Waiting for a new connection from Flutter on ${device .name }...' );
421+ _logger .printStatus ('Waiting for a new connection from Flutter on ${device .name }...' );
393422 }
394423 } on RPCError catch (err) {
395424 if (err.code == RPCErrorCodes .kServiceDisappeared) {
@@ -422,7 +451,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
422451 targetModel: TargetModel (stringArgDeprecated ('target-model' )! ),
423452 buildInfo: buildInfo,
424453 userIdentifier: userIdentifier,
425- platform: globals.platform ,
454+ platform: _platform ,
426455 );
427456 flutterDevice.observatoryUris = observatoryUris;
428457 final List <FlutterDevice > flutterDevices = < FlutterDevice > [flutterDevice];
@@ -434,7 +463,7 @@ known, it can be explicitly provided to attach via the command-line, e.g.
434463 );
435464
436465 return buildInfo.isDebug
437- ? hotRunnerFactory ! .build (
466+ ? _hotRunnerFactory .build (
438467 flutterDevices,
439468 target: targetFile,
440469 debuggingOptions: debuggingOptions,
0 commit comments