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,
