Make `Logger` required when injected in flutter_tool (#114111)
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart
index 620a693..1d77435 100644
--- a/packages/flutter_tools/lib/executable.dart
+++ b/packages/flutter_tools/lib/executable.dart
@@ -184,7 +184,7 @@
DebugAdapterCommand(verboseHelp: verboseHelp),
DevicesCommand(verboseHelp: verboseHelp),
DoctorCommand(verbose: verbose),
- DowngradeCommand(verboseHelp: verboseHelp),
+ DowngradeCommand(verboseHelp: verboseHelp, logger: globals.logger),
DriveCommand(verboseHelp: verboseHelp,
fileSystem: globals.fs,
logger: globals.logger,
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index f5406a9..11fb279 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -102,21 +102,21 @@
class _DaemonServer {
_DaemonServer({
this.port,
- this.logger,
+ required this.logger,
this.notifyingLogger,
});
final int? port;
/// Stdout logger used to print general server-related errors.
- final Logger? logger;
+ final Logger logger;
// Logger that sends the message to the other end of daemon connection.
final NotifyingLogger? notifyingLogger;
Future<void> run() async {
final ServerSocket serverSocket = await ServerSocket.bind(InternetAddress.loopbackIPv4, port!);
- logger!.printStatus('Daemon server listening on ${serverSocket.port}');
+ logger.printStatus('Daemon server listening on ${serverSocket.port}');
final StreamSubscription<Socket> subscription = serverSocket.listen(
(Socket socket) async {
@@ -124,13 +124,13 @@
// reset, we will receive an uncatchable exception.
// https://github.com/dart-lang/sdk/issues/25518
final Future<void> socketDone = socket.done.catchError((Object error, StackTrace stackTrace) {
- logger!.printError('Socket error: $error');
- logger!.printTrace('$stackTrace');
+ logger.printError('Socket error: $error');
+ logger.printTrace('$stackTrace');
});
final Daemon daemon = Daemon(
DaemonConnection(
- daemonStreams: DaemonStreams.fromSocket(socket, logger: logger!),
- logger: logger!,
+ daemonStreams: DaemonStreams.fromSocket(socket, logger: logger),
+ logger: logger,
),
notifyingLogger: notifyingLogger,
);
diff --git a/packages/flutter_tools/lib/src/commands/downgrade.dart b/packages/flutter_tools/lib/src/commands/downgrade.dart
index 666c190..2172ee7 100644
--- a/packages/flutter_tools/lib/src/commands/downgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/downgrade.dart
@@ -30,7 +30,7 @@
DowngradeCommand({
bool verboseHelp = false,
PersistentToolState? persistentToolState,
- Logger? logger,
+ required Logger logger,
ProcessManager? processManager,
FlutterVersion? flutterVersion,
Terminal? terminal,
@@ -64,7 +64,7 @@
PersistentToolState? _persistentToolState;
ProcessUtils? _processUtils;
ProcessManager? _processManager;
- Logger? _logger;
+ final Logger _logger;
Stdio? _stdio;
FileSystem? _fileSystem;
@@ -83,11 +83,10 @@
// values when being created. Fields must be lazily instantiated in runCommand,
// at least until the zone injection is refactored.
_terminal ??= globals.terminal;
- _logger ??= globals.logger;
_flutterVersion ??= globals.flutterVersion;
_persistentToolState ??= globals.persistentToolState;
_processManager ??= globals.processManager;
- _processUtils ??= ProcessUtils(processManager: _processManager!, logger: _logger!);
+ _processUtils ??= ProcessUtils(processManager: _processManager!, logger: _logger);
_stdio ??= globals.stdio;
_fileSystem ??= globals.fs;
String workingDirectory = Cache.flutterRoot!;
@@ -128,19 +127,18 @@
// If there is a terminal attached, prompt the user to confirm the downgrade.
final Stdio stdio = _stdio!;
final Terminal terminal = _terminal!;
- final Logger logger = _logger!;
if (stdio.hasTerminal && boolArgDeprecated('prompt')) {
terminal.usesTerminalUi = true;
final String result = await terminal.promptForCharInput(
const <String>['y', 'n'],
prompt: 'Downgrade flutter to version $humanReadableVersion?',
- logger: logger,
+ logger: _logger,
);
if (result == 'n') {
return FlutterCommandResult.success();
}
} else {
- logger.printStatus('Downgrading Flutter to version $humanReadableVersion');
+ _logger.printStatus('Downgrading Flutter to version $humanReadableVersion');
}
// To downgrade the tool, we perform a git checkout --hard, and then
@@ -175,7 +173,7 @@
);
}
await FlutterVersion.resetFlutterVersionFreshnessCheck();
- logger.printStatus('Success');
+ _logger.printStatus('Success');
return FlutterCommandResult.success();
}
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart
index e336417..e33f2ae 100644
--- a/packages/flutter_tools/lib/src/commands/drive.dart
+++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -52,7 +52,7 @@
@visibleForTesting FlutterDriverFactory? flutterDriverFactory,
@visibleForTesting this.signalsToHandle = const <ProcessSignal>{ProcessSignal.sigint, ProcessSignal.sigterm},
required FileSystem fileSystem,
- required Logger? logger,
+ required Logger logger,
required Platform platform,
required this.signals,
}) : _flutterDriverFactory = flutterDriverFactory,
@@ -171,7 +171,7 @@
FlutterDriverFactory? _flutterDriverFactory;
final FileSystem _fileSystem;
- final Logger? _logger;
+ final Logger _logger;
final FileSystemUtils _fsUtils;
@override
@@ -222,20 +222,20 @@
throwToolExit(null);
}
if (screenshot != null && !device.supportsScreenshot) {
- _logger!.printError('Screenshot not supported for ${device.name}.');
+ _logger.printError('Screenshot not supported for ${device.name}.');
}
final bool web = device is WebServerDevice || device is ChromiumDevice;
_flutterDriverFactory ??= FlutterDriverFactory(
applicationPackageFactory: ApplicationPackageFactory.instance!,
- logger: _logger!,
+ logger: _logger,
processUtils: globals.processUtils,
dartSdkPath: globals.artifacts!.getHostArtifact(HostArtifact.engineDartBinary).path,
devtoolsLauncher: DevtoolsLauncher.instance!,
);
final PackageConfig packageConfig = await loadPackageConfigWithLogging(
_fileSystem.file('.packages'),
- logger: _logger!,
+ logger: _logger,
throwOnError: false,
);
final DriverService driverService = _flutterDriverFactory!.createDriverService(web);
@@ -297,7 +297,7 @@
);
// If the test is sent a signal, take a screenshot before exiting
final Map<ProcessSignal, Object> screenshotTokens = _registerScreenshotCallbacks((ProcessSignal signal) async {
- _logger!.printError('Caught $signal');
+ _logger.printError('Caught $signal');
await _takeScreenshot(device);
});
final int testResult = await testResultFuture;
@@ -309,7 +309,7 @@
}
if (boolArgDeprecated('keep-app-running')) {
- _logger!.printStatus('Leaving the application running.');
+ _logger.printStatus('Leaving the application running.');
} else {
final File? skslFile = stringArgDeprecated('write-sksl-on-exit') != null
? _fileSystem.file(stringArgDeprecated('write-sksl-on-exit'))
@@ -332,7 +332,7 @@
}
Map<ProcessSignal, Object> _registerScreenshotCallbacks(Function(ProcessSignal) callback) {
- _logger!.printTrace('Registering signal handlers...');
+ _logger.printTrace('Registering signal handlers...');
final Map<ProcessSignal, Object> tokens = <ProcessSignal, Object>{};
for (final ProcessSignal signal in signalsToHandle) {
tokens[signal] = signals.addHandler(signal, callback);
@@ -341,7 +341,7 @@
}
void _unregisterScreenshotCallbacks(Map<ProcessSignal, Object> tokens) {
- _logger!.printTrace('Unregistering signal handlers...');
+ _logger.printTrace('Unregistering signal handlers...');
for (final MapEntry<ProcessSignal, Object> entry in tokens.entries) {
signals.removeHandler(entry.key, entry.value);
}
@@ -362,7 +362,7 @@
// for the corresponding test file relative to it.
if (!_fileSystem.path.isRelative(appFile)) {
if (!_fileSystem.path.isWithin(packageDir, appFile)) {
- _logger!.printError(
+ _logger.printError(
'Application file $appFile is outside the package directory $packageDir'
);
return null;
@@ -374,7 +374,7 @@
final List<String> parts = _fileSystem.path.split(appFile);
if (parts.length < 2) {
- _logger!.printError(
+ _logger.printError(
'Application file $appFile must reside in one of the sub-directories '
'of the package structure, not in the root directory.'
);
@@ -402,9 +402,9 @@
'png',
);
await device.takeScreenshot(outputFile);
- _logger!.printStatus('Screenshot written to ${outputFile.path}');
+ _logger.printStatus('Screenshot written to ${outputFile.path}');
} on Exception catch (error) {
- _logger!.printError('Error taking screenshot: $error');
+ _logger.printError('Error taking screenshot: $error');
}
}
}
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index aad941a..afd11e7 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -541,7 +541,6 @@
ipv6: ipv6,
debuggingOptions: await createDebuggingOptions(webMode),
stayResident: stayResident,
- urlTunneller: null,
fileSystem: globals.fs,
usage: globals.flutterUsage,
logger: globals.logger,
diff --git a/packages/flutter_tools/lib/src/devtools_launcher.dart b/packages/flutter_tools/lib/src/devtools_launcher.dart
index c895712..25811c7 100644
--- a/packages/flutter_tools/lib/src/devtools_launcher.dart
+++ b/packages/flutter_tools/lib/src/devtools_launcher.dart
@@ -22,7 +22,7 @@
DevtoolsServerLauncher({
required ProcessManager processManager,
required String dartExecutable,
- required Logger? logger,
+ required Logger logger,
required BotDetector botDetector,
}) : _processManager = processManager,
_dartExecutable = dartExecutable,
@@ -31,7 +31,7 @@
final ProcessManager _processManager;
final String _dartExecutable;
- final Logger? _logger;
+ final Logger _logger;
final BotDetector _botDetector;
final Completer<void> _processStartCompleter = Completer<void>();
@@ -73,7 +73,7 @@
_devToolsProcess!.stderr
.transform(utf8.decoder)
.transform(const LineSplitter())
- .listen(_logger!.printError);
+ .listen(_logger.printError);
final bool runningOnBot = await _botDetector.isRunningOnBot;
devToolsProcessExit = _devToolsProcess!.exitCode.then(
@@ -86,7 +86,7 @@
devToolsUrl = await completer.future;
} on Exception catch (e, st) {
- _logger!.printError('Failed to launch DevTools: $e', stackTrace: st);
+ _logger.printError('Failed to launch DevTools: $e', stackTrace: st);
}
}
diff --git a/packages/flutter_tools/lib/src/drive/web_driver_service.dart b/packages/flutter_tools/lib/src/drive/web_driver_service.dart
index 62bbb2b..38d96dc 100644
--- a/packages/flutter_tools/lib/src/drive/web_driver_service.dart
+++ b/packages/flutter_tools/lib/src/drive/web_driver_service.dart
@@ -82,7 +82,6 @@
disablePortPublication: debuggingOptions.disablePortPublication,
),
stayResident: true,
- urlTunneller: null,
flutterProject: FlutterProject.current(),
fileSystem: globals.fs,
usage: globals.flutterUsage,
diff --git a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart
index ce339e3..e8bb48d 100644
--- a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart
+++ b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart
@@ -51,8 +51,8 @@
required FlutterProject flutterProject,
required bool? ipv6,
required DebuggingOptions debuggingOptions,
- required UrlTunneller? urlTunneller,
- required Logger? logger,
+ UrlTunneller? urlTunneller,
+ required Logger logger,
required FileSystem fileSystem,
required SystemClock systemClock,
required Usage usage,
@@ -89,7 +89,7 @@
required bool? ipv6,
required DebuggingOptions debuggingOptions,
required FileSystem fileSystem,
- required Logger? logger,
+ required Logger logger,
required SystemClock systemClock,
required Usage usage,
UrlTunneller? urlTunneller,
@@ -110,13 +110,13 @@
);
final FileSystem _fileSystem;
- final Logger? _logger;
+ final Logger _logger;
final SystemClock _systemClock;
final Usage _usage;
final UrlTunneller? _urlTunneller;
@override
- Logger? get logger => _logger;
+ Logger get logger => _logger;
@override
FileSystem get fileSystem => _fileSystem;
@@ -190,7 +190,7 @@
_generatedEntrypointDirectory?.deleteSync(recursive: true);
} on FileSystemException {
// Best effort to clean up temp dirs.
- _logger!.printTrace(
+ _logger.printTrace(
'Failed to clean up temp directory: ${_generatedEntrypointDirectory!.path}',
);
}
@@ -210,14 +210,14 @@
const String fire = '🔥';
const String rawMessage =
' To hot restart changes while running, press "r" or "R".';
- final String message = _logger!.terminal.color(
- fire + _logger!.terminal.bolden(rawMessage),
+ final String message = _logger.terminal.color(
+ fire + _logger.terminal.bolden(rawMessage),
TerminalColor.red,
);
- _logger!.printStatus(message);
+ _logger.printStatus(message);
const String quitMessage = 'To quit, press "q".';
- _logger!.printStatus('For a more detailed help message, press "h". $quitMessage');
- _logger!.printStatus('');
+ _logger.printStatus('For a more detailed help message, press "h". $quitMessage');
+ _logger.printStatus('');
printDebuggerList();
}
@@ -240,11 +240,11 @@
buildInfo: debuggingOptions.buildInfo,
);
if (package == null) {
- _logger!.printStatus('This application is not configured to build on the web.');
- _logger!.printStatus('To add web support to a project, run `flutter create .`.');
+ _logger.printStatus('This application is not configured to build on the web.');
+ _logger.printStatus('To add web support to a project, run `flutter create .`.');
}
final String modeName = debuggingOptions.buildInfo.friendlyModeName;
- _logger!.printStatus(
+ _logger.printStatus(
'Launching ${getDisplayPath(target, _fileSystem)} '
'on ${device!.device!.name} in $modeName mode...',
);
@@ -283,7 +283,7 @@
await runSourceGenerators();
final UpdateFSReport report = await _updateDevFS(fullRestart: true);
if (!report.success) {
- _logger!.printError('Failed to compile application.');
+ _logger.printError('Failed to compile application.');
appFailedToStart();
return 1;
}
@@ -318,19 +318,19 @@
});
} on WebSocketException catch (error, stackTrace) {
appFailedToStart();
- _logger!.printError('$error', stackTrace: stackTrace);
+ _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage);
} on ChromeDebugException catch (error, stackTrace) {
appFailedToStart();
- _logger!.printError('$error', stackTrace: stackTrace);
+ _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage);
} on AppConnectionException catch (error, stackTrace) {
appFailedToStart();
- _logger!.printError('$error', stackTrace: stackTrace);
+ _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage);
} on SocketException catch (error, stackTrace) {
appFailedToStart();
- _logger!.printError('$error', stackTrace: stackTrace);
+ _logger.printError('$error', stackTrace: stackTrace);
throwToolExit(kExitMessage);
} on Exception {
appFailedToStart();
@@ -346,7 +346,7 @@
bool benchmarkMode = false,
}) async {
final DateTime start = _systemClock.now();
- final Status status = _logger!.startProgress(
+ final Status status = _logger.startProgress(
'Performing hot restart...',
progressId: 'hot.restart',
);
@@ -382,7 +382,7 @@
try {
if (!deviceIsDebuggable) {
- _logger!.printStatus('Recompile complete. Page requires refresh.');
+ _logger.printStatus('Recompile complete. Page requires refresh.');
} else if (isRunningDebug) {
await _vmService.service.callMethod('hotRestart');
} else {
@@ -400,7 +400,7 @@
final Duration elapsed = _systemClock.now().difference(start);
final String elapsedMS = getElapsedAsMilliseconds(elapsed);
- _logger!.printStatus('Restarted application in $elapsedMS.');
+ _logger.printStatus('Restarted application in $elapsedMS.');
unawaited(residentDevtoolsHandler!.hotRestart(flutterDevices));
// Don't track restart times for dart2js builds or web-server devices.
@@ -468,7 +468,7 @@
final bool isFirstUpload = !assetBundle.wasBuiltOnce();
final bool rebuildBundle = assetBundle.needsBuild();
if (rebuildBundle) {
- _logger!.printTrace('Updating assets');
+ _logger.printTrace('Updating assets');
final int result = await assetBundle.build(
packagesPath: debuggingOptions.buildInfo.packagesPath,
targetPlatform: TargetPlatform.web_javascript,
@@ -484,7 +484,7 @@
packageConfig: device!.devFS!.lastPackageConfig
?? debuggingOptions.buildInfo.packageConfig,
);
- final Status devFSStatus = _logger!.startProgress(
+ final Status devFSStatus = _logger.startProgress(
'Waiting for connection from debug service on ${device!.device!.name}...',
);
final UpdateFSReport report = await device!.devFS!.update(
@@ -507,7 +507,7 @@
shaderCompiler: device!.developmentShaderCompiler,
);
devFSStatus.stop();
- _logger!.printTrace('Synced ${getSizeAsMB(report.syncedBytes)}.');
+ _logger.printTrace('Synced ${getSizeAsMB(report.syncedBytes)}.');
return report;
}
@@ -538,7 +538,7 @@
void onLogEvent(vmservice.Event event) {
final String message = processVmServiceMessage(event);
- _logger!.printStatus(message);
+ _logger.printStatus(message);
}
_stdOutSub = _vmService.service.onStdoutEvent.listen(onLogEvent);
@@ -609,16 +609,16 @@
..createSync(recursive: true)
..writeAsStringSync(websocketUri.toString());
}
- _logger!.printStatus('Debug service listening on $websocketUri');
- _logger!.printStatus('');
+ _logger.printStatus('Debug service listening on $websocketUri');
+ _logger.printStatus('');
if (debuggingOptions.buildInfo.nullSafetyMode == NullSafetyMode.sound) {
- _logger!.printStatus('💪 Running with sound null safety 💪', emphasis: true);
+ _logger.printStatus('💪 Running with sound null safety 💪', emphasis: true);
} else {
- _logger!.printStatus(
+ _logger.printStatus(
'Running without sound null safety ⚠️',
emphasis: true,
);
- _logger!.printStatus(
+ _logger.printStatus(
'Dart 3 will only support sound null safety, see https://dart.dev/null-safety',
);
}
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index 4b493d9..7f4e838 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -637,7 +637,7 @@
ResidentDevtoolsHandler? get residentDevtoolsHandler;
@protected
- Logger? get logger;
+ Logger get logger;
@protected
FileSystem? get fileSystem;
@@ -666,7 +666,7 @@
final String data = await device.vmService!.flutterDebugDumpApp(
isolateId: view.uiIsolate!.id!,
);
- logger!.printStatus(data);
+ logger.printStatus(data);
}
}
return true;
@@ -683,7 +683,7 @@
final String data = await device.vmService!.flutterDebugDumpRenderTree(
isolateId: view.uiIsolate!.id!,
);
- logger!.printStatus(data);
+ logger.printStatus(data);
}
}
return true;
@@ -702,7 +702,7 @@
}
for (final FlutterDevice? device in flutterDevices) {
if (device?.targetPlatform == TargetPlatform.web_javascript) {
- logger!.printWarning('Unable to get jank metrics for web');
+ logger.printWarning('Unable to get jank metrics for web');
continue;
}
final List<FlutterView> views = await device!.vmService!.getFlutterViews();
@@ -719,9 +719,9 @@
'json',
);
tempFile.writeAsStringSync(jsonEncode(rasterData), flush: true);
- logger!.printStatus('Wrote jank metrics to ${tempFile.absolute.path}');
+ logger.printStatus('Wrote jank metrics to ${tempFile.absolute.path}');
} else {
- logger!.printWarning('Unable to get jank metrics.');
+ logger.printWarning('Unable to get jank metrics.');
}
}
}
@@ -739,7 +739,7 @@
final String data = await device.vmService!.flutterDebugDumpLayerTree(
isolateId: view.uiIsolate!.id!,
);
- logger!.printStatus(data);
+ logger.printStatus(data);
}
}
return true;
@@ -758,7 +758,7 @@
final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInTraversalOrder(
isolateId: view.uiIsolate!.id!,
);
- logger!.printStatus(data);
+ logger.printStatus(data);
}
}
return true;
@@ -777,7 +777,7 @@
final String data = await device.vmService!.flutterDebugDumpSemanticsTreeInInverseHitTestOrder(
isolateId: view.uiIsolate!.id!,
);
- logger!.printStatus(data);
+ logger.printStatus(data);
}
}
return true;
@@ -891,7 +891,7 @@
brightness: next,
);
}
- logger!.printStatus('Changed brightness to $next.');
+ logger.printStatus('Changed brightness to $next.');
}
return true;
}
@@ -916,7 +916,7 @@
);
}
}
- logger!.printStatus('Switched operating system to $to');
+ logger.printStatus('Switched operating system to $to');
return true;
}
@@ -954,7 +954,7 @@
if (!device.device!.supportsScreenshot && !supportsServiceProtocol) {
return;
}
- final Status status = logger!.startProgress(
+ final Status status = logger.startProgress(
'Taking screenshot for ${device.device!.name}...',
);
final File outputFile = getUniqueFile(
@@ -975,12 +975,12 @@
}
final int sizeKB = outputFile.lengthSync() ~/ 1024;
status.stop();
- logger!.printStatus(
+ logger.printStatus(
'Screenshot written to ${fileSystem!.path.relative(outputFile.path)} (${sizeKB}kB).',
);
} on Exception catch (error) {
status.cancel();
- logger!.printError('Error taking screenshot: $error');
+ logger.printError('Error taking screenshot: $error');
}
}
@@ -1016,7 +1016,7 @@
}
return true;
} on vm_service.RPCError catch (error) {
- logger!.printError('Error communicating with Flutter on the device: $error');
+ logger.printError('Error communicating with Flutter on the device: $error');
return false;
}
}
@@ -1088,7 +1088,7 @@
}
@override
- Logger? get logger => globals.logger;
+ Logger get logger => globals.logger;
@override
FileSystem get fileSystem => globals.fs;
diff --git a/packages/flutter_tools/lib/src/web/web_runner.dart b/packages/flutter_tools/lib/src/web/web_runner.dart
index 3094ac7..1ffe077 100644
--- a/packages/flutter_tools/lib/src/web/web_runner.dart
+++ b/packages/flutter_tools/lib/src/web/web_runner.dart
@@ -26,8 +26,8 @@
required FlutterProject flutterProject,
required bool? ipv6,
required DebuggingOptions debuggingOptions,
- required UrlTunneller? urlTunneller,
- required Logger? logger,
+ UrlTunneller? urlTunneller,
+ required Logger logger,
required FileSystem fileSystem,
required SystemClock systemClock,
required Usage usage,