diff --git a/packages/flutter_tools/lib/src/android/gradle_utils.dart b/packages/flutter_tools/lib/src/android/gradle_utils.dart index c54fabd3b6..7a93ec7c11 100644 --- a/packages/flutter_tools/lib/src/android/gradle_utils.dart +++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart @@ -16,7 +16,7 @@ import '../base/utils.dart'; import '../base/version.dart'; import '../build_info.dart'; import '../cache.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../reporting/reporting.dart'; diff --git a/packages/flutter_tools/lib/src/commands/build_linux.dart b/packages/flutter_tools/lib/src/commands/build_linux.dart index 70fdf054dd..5c65fb38ab 100644 --- a/packages/flutter_tools/lib/src/commands/build_linux.dart +++ b/packages/flutter_tools/lib/src/commands/build_linux.dart @@ -12,7 +12,7 @@ import '../base/os.dart'; import '../build_info.dart'; import '../cache.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../linux/build_linux.dart'; import '../project.dart'; import '../runner/flutter_command.dart' show FlutterCommandResult; diff --git a/packages/flutter_tools/lib/src/commands/build_macos.dart b/packages/flutter_tools/lib/src/commands/build_macos.dart index fc70599cfd..c6834096c2 100644 --- a/packages/flutter_tools/lib/src/commands/build_macos.dart +++ b/packages/flutter_tools/lib/src/commands/build_macos.dart @@ -11,7 +11,7 @@ import '../base/common.dart'; import '../build_info.dart'; import '../cache.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../macos/build_macos.dart'; import '../project.dart'; import '../runner/flutter_command.dart' show FlutterCommandResult; diff --git a/packages/flutter_tools/lib/src/commands/build_windows.dart b/packages/flutter_tools/lib/src/commands/build_windows.dart index 91f58fa3ab..9b492702eb 100644 --- a/packages/flutter_tools/lib/src/commands/build_windows.dart +++ b/packages/flutter_tools/lib/src/commands/build_windows.dart @@ -11,7 +11,7 @@ import '../base/common.dart'; import '../build_info.dart'; import '../cache.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../runner/flutter_command.dart' show FlutterCommandResult; import '../windows/build_windows.dart'; diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart index a8a47dfa77..533d2c0d77 100644 --- a/packages/flutter_tools/lib/src/commands/config.dart +++ b/packages/flutter_tools/lib/src/commands/config.dart @@ -7,7 +7,7 @@ import '../base/common.dart'; import '../convert.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; 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 f4060f6888..8ef198420c 100644 --- a/packages/flutter_tools/lib/src/drive/web_driver_service.dart +++ b/packages/flutter_tools/lib/src/drive/web_driver_service.dart @@ -17,7 +17,7 @@ import '../base/process.dart'; import '../build_info.dart'; import '../convert.dart'; import '../device.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../project.dart'; import '../resident_runner.dart'; import '../web/web_runner.dart'; diff --git a/packages/flutter_tools/lib/src/globals.dart b/packages/flutter_tools/lib/src/globals.dart index ec4d8a2a76..64c54ba87e 100644 --- a/packages/flutter_tools/lib/src/globals.dart +++ b/packages/flutter_tools/lib/src/globals.dart @@ -21,7 +21,6 @@ import 'macos/xcdevice.dart'; import 'macos/xcode.dart'; import 'project.dart'; import 'reporting/crash_reporting.dart'; -import 'reporting/reporting.dart'; import 'runner/local_engine.dart'; export 'globals_null_migrated.dart'; @@ -30,7 +29,6 @@ Artifacts get artifacts => context.get(); BuildSystem get buildSystem => context.get(); CrashReporter get crashReporter => context.get(); Doctor get doctor => context.get(); -Usage get flutterUsage => context.get(); DeviceManager get deviceManager => context.get(); FlutterProjectFactory get projectFactory { diff --git a/packages/flutter_tools/lib/src/globals_null_migrated.dart b/packages/flutter_tools/lib/src/globals_null_migrated.dart index 46a1b1761c..307855408b 100644 --- a/packages/flutter_tools/lib/src/globals_null_migrated.dart +++ b/packages/flutter_tools/lib/src/globals_null_migrated.dart @@ -25,6 +25,7 @@ import 'base/user_messages.dart'; import 'cache.dart'; import 'ios/plist_parser.dart'; import 'persistent_tool_state.dart'; +import 'reporting/reporting.dart'; import 'version.dart'; Cache get cache => context.get()!; @@ -36,6 +37,7 @@ Signals get signals => context.get() ?? LocalSignals.instance; AndroidStudio? get androidStudio => context.get(); AndroidSdk? get androidSdk => context.get(); FlutterVersion get flutterVersion => context.get()!; +Usage get flutterUsage => context.get()!; PersistentToolState? get persistentToolState => PersistentToolState.instance; diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 442b06f21d..4d346624f1 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart @@ -21,7 +21,7 @@ import '../build_info.dart'; import '../convert.dart'; import '../device.dart'; import '../device_port_forwarder.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../macos/xcdevice.dart'; import '../project.dart'; import '../protocol_discovery.dart'; diff --git a/packages/flutter_tools/lib/src/reporting/disabled_usage.dart b/packages/flutter_tools/lib/src/reporting/disabled_usage.dart index 858ae7175a..aeda99174b 100644 --- a/packages/flutter_tools/lib/src/reporting/disabled_usage.dart +++ b/packages/flutter_tools/lib/src/reporting/disabled_usage.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - part of reporting; class DisabledUsage implements Usage { @@ -20,28 +18,28 @@ class DisabledUsage implements Usage { set enabled(bool value) { } @override - String get clientId => null; + String get clientId => ''; @override - void sendCommand(String command, { Map parameters }) { } + void sendCommand(String command, { Map? parameters }) { } @override void sendEvent( String category, String parameter, { - String label, - int value, - Map parameters, + String? label, + int? value, + Map? parameters, }) { } @override - void sendTiming(String category, String variableName, Duration duration, { String label }) { } + void sendTiming(String category, String variableName, Duration duration, { String? label }) { } @override void sendException(dynamic exception) { } @override - Stream> get onSend => null; + Stream> get onSend => const Stream>.empty(); @override Future ensureAnalyticsSent() => Future.value(); diff --git a/packages/flutter_tools/lib/src/reporting/events.dart b/packages/flutter_tools/lib/src/reporting/events.dart index 799cdb3fcf..2cfa430898 100644 --- a/packages/flutter_tools/lib/src/reporting/events.dart +++ b/packages/flutter_tools/lib/src/reporting/events.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - part of reporting; /// A generic usage even that does not involve custom dimensions. @@ -14,13 +12,13 @@ class UsageEvent { UsageEvent(this.category, this.parameter, { this.label, this.value, - @required this.flutterUsage, + required this.flutterUsage, }); final String category; final String parameter; - final String label; - final int value; + final String? label; + final int? value; final Usage flutterUsage; void send() { @@ -37,11 +35,11 @@ class UsageEvent { /// sync/transfer "overhead" of updating this number of source files. class HotEvent extends UsageEvent { HotEvent(String parameter, { - @required this.targetPlatform, - @required this.sdkName, - @required this.emulator, - @required this.fullRestart, - @required this.fastReassemble, + required this.targetPlatform, + required this.sdkName, + required this.emulator, + required this.fullRestart, + required this.fastReassemble, this.reason, this.finalLibraryCount, this.syncedLibraryCount, @@ -53,20 +51,20 @@ class HotEvent extends UsageEvent { this.overallTimeInMs, }) : super('hot', parameter, flutterUsage: globals.flutterUsage); - final String reason; + final String? reason; final String targetPlatform; final String sdkName; final bool emulator; final bool fullRestart; final bool fastReassemble; - final int finalLibraryCount; - final int syncedLibraryCount; - final int syncedClassesCount; - final int syncedProceduresCount; - final int syncedBytes; - final int invalidatedSourcesCount; - final int transferTimeInMs; - final int overallTimeInMs; + final int? finalLibraryCount; + final int? syncedLibraryCount; + final int? syncedClassesCount; + final int? syncedProceduresCount; + final int? syncedBytes; + final int? invalidatedSourcesCount; + final int? transferTimeInMs; + final int? overallTimeInMs; @override void send() { @@ -76,7 +74,7 @@ class HotEvent extends UsageEvent { CustomDimensions.hotEventEmulator: emulator.toString(), CustomDimensions.hotEventFullRestart: fullRestart.toString(), if (reason != null) - CustomDimensions.hotEventReason: reason, + CustomDimensions.hotEventReason: reason!, if (finalLibraryCount != null) CustomDimensions.hotEventFinalLibraryCount: finalLibraryCount.toString(), if (syncedLibraryCount != null) @@ -103,9 +101,9 @@ class HotEvent extends UsageEvent { /// An event that reports the result of a [DoctorValidator] class DoctorResultEvent extends UsageEvent { DoctorResultEvent({ - @required this.validator, - @required this.result, - Usage flutterUsage, + required this.validator, + required this.result, + Usage? flutterUsage, }) : super( 'doctor-result', '${validator.runtimeType}', @@ -139,20 +137,20 @@ class DoctorResultEvent extends UsageEvent { /// An event that reports on the result of a pub invocation. class PubResultEvent extends UsageEvent { PubResultEvent({ - @required String context, - @required String result, - @required Usage usage, + required String context, + required String result, + required Usage usage, }) : super('pub-result', context, label: result, flutterUsage: usage); } /// An event that reports something about a build. class BuildEvent extends UsageEvent { BuildEvent(String label, { - String command, - String settings, - String eventError, - @required Usage flutterUsage, - @required String type, + String? command, + String? settings, + String? eventError, + required Usage flutterUsage, + required String type, }) : _command = command, _settings = settings, _eventError = eventError, @@ -165,19 +163,19 @@ class BuildEvent extends UsageEvent { flutterUsage: flutterUsage, ); - final String _command; - final String _settings; - final String _eventError; + final String? _command; + final String? _settings; + final String? _eventError; @override void send() { final Map parameters = _useCdKeys({ if (_command != null) - CustomDimensions.buildEventCommand: _command, + CustomDimensions.buildEventCommand: _command!, if (_settings != null) - CustomDimensions.buildEventSettings: _settings, + CustomDimensions.buildEventSettings: _settings!, if (_eventError != null) - CustomDimensions.buildEventError: _eventError, + CustomDimensions.buildEventError: _eventError!, }); flutterUsage.sendEvent( category, @@ -226,7 +224,7 @@ class CommandResultEvent extends UsageEvent { class AnalyticsConfigEvent extends UsageEvent { AnalyticsConfigEvent({ /// Whether analytics reporting is being enabled (true) or disabled (false). - @required bool enabled, + required bool enabled, }) : super( 'analytics', 'enabled', @@ -238,11 +236,11 @@ class AnalyticsConfigEvent extends UsageEvent { /// An event that reports when the code size measurement is run via `--analyze-size`. class CodeSizeEvent extends UsageEvent { CodeSizeEvent(String platform, { - @required Usage flutterUsage, + required Usage flutterUsage, }) : super( 'code-size-analysis', platform, - flutterUsage: flutterUsage ?? globals.flutterUsage, + flutterUsage: flutterUsage ); } @@ -279,14 +277,15 @@ class NullSafetyAnalysisEvent implements UsageEvent { return; } int migrated = 0; - LanguageVersion languageVersion; + LanguageVersion? languageVersion; for (final Package package in packageConfig.packages) { + final LanguageVersion? packageLanguageVersion = package.languageVersion; if (package.name == currentPackage) { - languageVersion = package.languageVersion; + languageVersion = packageLanguageVersion; } - if (package.languageVersion != null && - package.languageVersion.major >= nullSafeVersion.major && - package.languageVersion.minor >= nullSafeVersion.minor) { + if (packageLanguageVersion != null && + packageLanguageVersion.major >= nullSafeVersion.major && + packageLanguageVersion.minor >= nullSafeVersion.minor) { migrated += 1; } } diff --git a/packages/flutter_tools/lib/src/reporting/reporting.dart b/packages/flutter_tools/lib/src/reporting/reporting.dart index f7e53360b6..06c4e608a5 100644 --- a/packages/flutter_tools/lib/src/reporting/reporting.dart +++ b/packages/flutter_tools/lib/src/reporting/reporting.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - library reporting; import 'dart:async'; @@ -20,7 +18,7 @@ import '../build_info.dart'; import '../dart/language_version.dart'; import '../doctor_validator.dart'; import '../features.dart'; -import '../globals.dart' as globals; +import '../globals_null_migrated.dart' as globals; import '../version.dart'; import 'first_run.dart'; diff --git a/packages/flutter_tools/lib/src/reporting/usage.dart b/packages/flutter_tools/lib/src/reporting/usage.dart index 09b4018b5b..daa3bdc94b 100644 --- a/packages/flutter_tools/lib/src/reporting/usage.dart +++ b/packages/flutter_tools/lib/src/reporting/usage.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - part of reporting; const String _kFlutterUA = 'UA-67589403-6'; @@ -77,24 +75,27 @@ abstract class Usage { /// [logFile] are used for testing. factory Usage({ String settingsName = 'flutter', - String versionOverride, - String configDirOverride, - String logFile, - AnalyticsFactory analyticsIOFactory, - FirstRunMessenger firstRunMessenger, - @required bool runningOnBot, - }) => _DefaultUsage(settingsName: settingsName, - versionOverride: versionOverride, - configDirOverride: configDirOverride, - logFile: logFile, - analyticsIOFactory: analyticsIOFactory, - runningOnBot: runningOnBot, - firstRunMessenger: firstRunMessenger); + String? versionOverride, + String? configDirOverride, + String? logFile, + AnalyticsFactory? analyticsIOFactory, + FirstRunMessenger? firstRunMessenger, + required bool runningOnBot, + }) => + _DefaultUsage.initialize( + settingsName: settingsName, + versionOverride: versionOverride, + configDirOverride: configDirOverride, + logFile: logFile, + analyticsIOFactory: analyticsIOFactory, + runningOnBot: runningOnBot, + firstRunMessenger: firstRunMessenger, + ); /// Uses the global [Usage] instance to send a 'command' to analytics. static void command(String command, { - Map parameters, - }) => globals.flutterUsage.sendCommand(command, parameters: _useCdKeys(parameters)); + Map? parameters, + }) => globals.flutterUsage.sendCommand(command, parameters: parameters == null ? null : _useCdKeys(parameters)); /// Whether analytics reporting should be suppressed. bool get suppressAnalytics; @@ -118,7 +119,7 @@ abstract class Usage { /// keys are well-defined in [CustomDimensions] above. void sendCommand( String command, { - Map parameters, + Map? parameters, }); /// Sends an 'event' to the underlying analytics implementation. @@ -130,9 +131,9 @@ abstract class Usage { void sendEvent( String category, String parameter, { - String label, - int value, - Map parameters, + String? label, + int? value, + Map? parameters, }); /// Sends timing information to the underlying analytics implementation. @@ -140,7 +141,7 @@ abstract class Usage { String category, String variableName, Duration duration, { - String label, + String? label, }); /// Sends an exception to the underlying analytics implementation. @@ -164,15 +165,15 @@ typedef AnalyticsFactory = Analytics Function( String applicationName, String applicationVersion, { String analyticsUrl, - Directory documentDirectory, + Directory? documentDirectory, }); Analytics _defaultAnalyticsIOFactory( String trackingId, String applicationName, String applicationVersion, { - String analyticsUrl, - Directory documentDirectory, + String? analyticsUrl, + Directory? documentDirectory, }) { return AnalyticsIO( trackingId, @@ -184,24 +185,34 @@ Analytics _defaultAnalyticsIOFactory( } class _DefaultUsage implements Usage { - _DefaultUsage({ + _DefaultUsage._({ + required bool suppressAnalytics, + required Analytics analytics, + required this.firstRunMessenger, + required SystemClock clock, + }) : _suppressAnalytics = suppressAnalytics, + _analytics = analytics, + _clock = clock; + + static _DefaultUsage initialize({ String settingsName = 'flutter', - String versionOverride, - String configDirOverride, - String logFile, - AnalyticsFactory analyticsIOFactory, - @required this.firstRunMessenger, - @required bool runningOnBot, + String? versionOverride, + String? configDirOverride, + String? logFile, + AnalyticsFactory? analyticsIOFactory, + required FirstRunMessenger? firstRunMessenger, + required bool runningOnBot, }) { final FlutterVersion flutterVersion = globals.flutterVersion; final String version = versionOverride ?? flutterVersion.getVersionString(redactUnknownBranches: true); final bool suppressEnvFlag = globals.platform.environment['FLUTTER_SUPPRESS_ANALYTICS'] == 'true'; - final String logFilePath = logFile ?? globals.platform.environment['FLUTTER_ANALYTICS_LOG_FILE']; + final String? logFilePath = logFile ?? globals.platform.environment['FLUTTER_ANALYTICS_LOG_FILE']; final bool usingLogFile = logFilePath != null && logFilePath.isNotEmpty; - analyticsIOFactory ??= _defaultAnalyticsIOFactory; - _clock = globals.systemClock; - + final AnalyticsFactory analyticsFactory = analyticsIOFactory ?? _defaultAnalyticsIOFactory; + bool suppressAnalytics = false; + bool skipAnalyticsSessionSetup = false; + Analytics? setupAnalytics; if (// To support testing, only allow other signals to suppress analytics // when analytics are not being shunted to a file. !usingLogFile && ( @@ -213,73 +224,81 @@ class _DefaultUsage implements Usage { runningOnBot || // Ignore when suppressed by FLUTTER_SUPPRESS_ANALYTICS. suppressEnvFlag - )) { + )) { // If we think we're running on a CI system, suppress sending analytics. suppressAnalytics = true; - _analytics = AnalyticsMock(); - return; + setupAnalytics = AnalyticsMock(); + skipAnalyticsSessionSetup = true; } - if (usingLogFile) { - _analytics = LogToFileAnalytics(logFilePath); + setupAnalytics ??= LogToFileAnalytics(logFilePath); } else { try { ErrorHandlingFileSystem.noExitOnFailure(() { - _analytics = analyticsIOFactory( + setupAnalytics = analyticsFactory( _kFlutterUA, settingsName, version, documentDirectory: configDirOverride != null - ? globals.fs.directory(configDirOverride) - : null, + ? globals.fs.directory(configDirOverride) + : null, ); }); } on Exception catch (e) { globals.printTrace('Failed to initialize analytics reporting: $e'); suppressAnalytics = true; - _analytics = AnalyticsMock(); - return; + setupAnalytics ??= AnalyticsMock(); + skipAnalyticsSessionSetup = true; } } - assert(_analytics != null); - // Report a more detailed OS version string than package:usage does by default. - _analytics.setSessionValue( - cdKey(CustomDimensions.sessionHostOsDetails), - globals.os.name, - ); - // Send the branch name as the "channel". - _analytics.setSessionValue( - cdKey(CustomDimensions.sessionChannelName), - flutterVersion.getBranchName(redactUnknownBranches: true), - ); - // For each flutter experimental feature, record a session value in a comma - // separated list. - final String enabledFeatures = allFeatures - .where((Feature feature) { - return feature.configSetting != null && - globals.config.getValue(feature.configSetting) == true; + final Analytics analytics = setupAnalytics!; + if (!skipAnalyticsSessionSetup) { + // Report a more detailed OS version string than package:usage does by default. + analytics.setSessionValue( + cdKey(CustomDimensions.sessionHostOsDetails), + globals.os.name, + ); + // Send the branch name as the "channel". + analytics.setSessionValue( + cdKey(CustomDimensions.sessionChannelName), + flutterVersion.getBranchName(redactUnknownBranches: true), + ); + // For each flutter experimental feature, record a session value in a comma + // separated list. + final String enabledFeatures = allFeatures + .where((Feature feature) { + final String? configSetting = feature.configSetting; + return configSetting != null && globals.config.getValue(configSetting) == true; }) - .map((Feature feature) => feature.configSetting) - .join(','); - _analytics.setSessionValue( - cdKey(CustomDimensions.enabledFlutterFeatures), - enabledFeatures, - ); + .map((Feature feature) => feature.configSetting) + .join(','); + analytics.setSessionValue( + cdKey(CustomDimensions.enabledFlutterFeatures), + enabledFeatures, + ); - // Record the host as the application installer ID - the context that flutter_tools is running in. - if (globals.platform.environment.containsKey('FLUTTER_HOST')) { - _analytics.setSessionValue('aiid', globals.platform.environment['FLUTTER_HOST']); + // Record the host as the application installer ID - the context that flutter_tools is running in. + if (globals.platform.environment.containsKey('FLUTTER_HOST')) { + analytics.setSessionValue('aiid', globals.platform.environment['FLUTTER_HOST']); + } + analytics.analyticsOpt = AnalyticsOpt.optOut; } - _analytics.analyticsOpt = AnalyticsOpt.optOut; + + return _DefaultUsage._( + suppressAnalytics: suppressAnalytics, + analytics: analytics, + firstRunMessenger: firstRunMessenger, + clock: globals.systemClock, + ); } - Analytics _analytics; - final FirstRunMessenger firstRunMessenger; + final Analytics _analytics; + final FirstRunMessenger? firstRunMessenger; bool _printedWelcome = false; bool _suppressAnalytics = false; - SystemClock _clock; + final SystemClock _clock; @override bool get suppressAnalytics => _suppressAnalytics || _analytics.firstRun; @@ -301,7 +320,7 @@ class _DefaultUsage implements Usage { String get clientId => _analytics.clientId; @override - void sendCommand(String command, { Map parameters }) { + void sendCommand(String command, { Map? parameters }) { if (suppressAnalytics) { return; } @@ -317,9 +336,9 @@ class _DefaultUsage implements Usage { void sendEvent( String category, String parameter, { - String label, - int value, - Map parameters, + String? label, + int? value, + Map? parameters, }) { if (suppressAnalytics) { return; @@ -344,7 +363,7 @@ class _DefaultUsage implements Usage { String category, String variableName, Duration duration, { - String label, + String? label, }) { if (suppressAnalytics) { return; @@ -384,11 +403,12 @@ class _DefaultUsage implements Usage { } // Display the welcome message if this is the first run of the tool or if // the license terms have changed since it was last displayed. - if (firstRunMessenger != null && firstRunMessenger.shouldDisplayLicenseTerms() ?? true) { + final FirstRunMessenger? messenger = firstRunMessenger; + if (messenger != null && messenger.shouldDisplayLicenseTerms()) { globals.printStatus(''); - globals.printStatus(firstRunMessenger.licenseTerms, emphasis: true); + globals.printStatus(messenger.licenseTerms, emphasis: true); _printedWelcome = true; - firstRunMessenger.confirmLicenseTermsDisplayed(); + messenger.confirmLicenseTermsDisplayed(); } } } @@ -412,7 +432,7 @@ class LogToFileAnalytics extends AnalyticsMock { @override Future sendScreenView(String viewName, { - Map parameters, + Map? parameters, }) { if (!enabled) { return Future.value(null); @@ -427,7 +447,7 @@ class LogToFileAnalytics extends AnalyticsMock { @override Future sendEvent(String category, String action, - {String label, int value, Map parameters}) { + {String? label, int? value, Map? parameters}) { if (!enabled) { return Future.value(null); } @@ -441,7 +461,7 @@ class LogToFileAnalytics extends AnalyticsMock { @override Future sendTiming(String variableName, int time, - {String category, String label}) { + {String? category, String? label}) { if (!enabled) { return Future.value(null); } @@ -496,12 +516,12 @@ class TestUsage implements Usage { void printWelcome() { } @override - void sendCommand(String command, {Map parameters}) { + void sendCommand(String command, {Map? parameters}) { commands.add(TestUsageCommand(command, parameters: parameters)); } @override - void sendEvent(String category, String parameter, {String label, int value, Map parameters}) { + void sendEvent(String category, String parameter, {String? label, int? value, Map? parameters}) { events.add(TestUsageEvent(category, parameter, label: label, value: value, parameters: parameters)); } @@ -511,7 +531,7 @@ class TestUsage implements Usage { } @override - void sendTiming(String category, String variableName, Duration duration, {String label}) { + void sendTiming(String category, String variableName, Duration duration, {String? label}) { timings.add(TestTimingEvent(category, variableName, duration, label: label)); } } @@ -522,7 +542,7 @@ class TestUsageCommand { const TestUsageCommand(this.command, {this.parameters}); final String command; - final Map parameters; + final Map? parameters; @override bool operator ==(Object other) { @@ -545,9 +565,9 @@ class TestUsageEvent { final String category; final String parameter; - final String label; - final int value; - final Map parameters; + final String? label; + final int? value; + final Map? parameters; @override bool operator ==(Object other) { @@ -578,7 +598,7 @@ class TestTimingEvent { final String category; final String variableName; final Duration duration; - final String label; + final String? label; @override bool operator ==(Object other) { @@ -599,7 +619,7 @@ class TestTimingEvent { String toString() => 'TestTimingEvent($category, $variableName, $duration, label:$label)'; } -bool _mapsEqual(Map a, Map b) { +bool _mapsEqual(Map? a, Map? b) { if (a == b) { return true; } diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index 51658352f7..22d9a4a653 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -25,7 +25,7 @@ import 'dart/package_map.dart'; import 'devfs.dart'; import 'device.dart'; import 'features.dart'; -import 'globals.dart' as globals; +import 'globals_null_migrated.dart' as globals; import 'reporting/reporting.dart'; import 'resident_devtools_handler.dart'; import 'resident_runner.dart'; diff --git a/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart b/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart index 45872622ee..b9144bc896 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/packages_test.dart @@ -18,7 +18,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/packages.dart'; import 'package:flutter_tools/src/dart/pub.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import '../../src/common.dart'; import '../../src/context.dart'; diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart index 5923bc1c56..721cc981d7 100644 --- a/packages/flutter_tools/test/general.shard/analytics_test.dart +++ b/packages/flutter_tools/test/general.shard/analytics_test.dart @@ -17,7 +17,7 @@ import 'package:flutter_tools/src/commands/config.dart'; import 'package:flutter_tools/src/commands/doctor.dart'; import 'package:flutter_tools/src/doctor.dart'; import 'package:flutter_tools/src/features.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/version.dart'; diff --git a/packages/flutter_tools/test/general.shard/reporting/events_test.dart b/packages/flutter_tools/test/general.shard/reporting/events_test.dart index c3bb195b02..7e17933796 100644 --- a/packages/flutter_tools/test/general.shard/reporting/events_test.dart +++ b/packages/flutter_tools/test/general.shard/reporting/events_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/doctor_validator.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart index 640b03f3d3..20334503b4 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_cold_test.dart @@ -15,7 +15,7 @@ import 'package:flutter_tools/src/isolated/devfs_web.dart'; import 'package:flutter_tools/src/isolated/resident_web_runner.dart'; import 'package:flutter_tools/src/build_system/build_system.dart'; import 'package:flutter_tools/src/device.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/resident_runner.dart'; import 'package:flutter_tools/src/web/chrome.dart'; diff --git a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart index fbe5f5d0c0..f12042d9d5 100644 --- a/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart +++ b/packages/flutter_tools/test/general.shard/resident_web_runner_test.dart @@ -21,7 +21,7 @@ import 'package:flutter_tools/src/isolated/resident_web_runner.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/devfs.dart'; import 'package:flutter_tools/src/device.dart'; -import 'package:flutter_tools/src/globals.dart' as globals; +import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/resident_runner.dart';