diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart index 72d987583bdfe..c22ddaad6414e 100644 --- a/packages/flutter_tools/lib/src/android/android_studio.dart +++ b/packages/flutter_tools/lib/src/android/android_studio.dart @@ -384,17 +384,12 @@ class AndroidStudio { final String? homeDirPath = globals.fsUtils.homeDirPath; if (homeDirPath != null && globals.fs.directory(homeDirPath).existsSync()) { - final Directory homeDir = globals.fs.directory(homeDirPath); - - final List directoriesToSearch = [homeDir]; - // >=4.1 has new install location at $HOME/.cache/Google - final String cacheDirPath = - globals.fs.path.join(homeDirPath, '.cache', 'Google'); - - if (globals.fs.isDirectorySync(cacheDirPath)) { - directoriesToSearch.add(globals.fs.directory(cacheDirPath)); - } + final String cacheDirPath = globals.fs.path.join(homeDirPath, '.cache', 'Google'); + final List directoriesToSearch = [ + globals.fs.directory(homeDirPath), + if (globals.fs.isDirectorySync(cacheDirPath)) globals.fs.directory(cacheDirPath), + ]; final List entities = []; diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 713173ac18be1..8280b1d987259 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -811,14 +811,11 @@ class AndroidGradleBuilder implements AndroidBuilder { _logger.printError(result.stderr, wrap: false); return const []; } - final List options = []; - for (final String line in LineSplitter.split(result.stdout)) { - final RegExpMatch? match = _kBuildVariantRegex.firstMatch(line); - if (match != null) { - options.add(match.namedGroup(_kBuildVariantRegexGroupName)!); - } - } - return options; + return [ + for (final String line in LineSplitter.split(result.stdout)) + if (_kBuildVariantRegex.firstMatch(line) case final RegExpMatch match) + match.namedGroup(_kBuildVariantRegexGroupName)!, + ]; } @override diff --git a/packages/flutter_tools/lib/src/base/analyze_size.dart b/packages/flutter_tools/lib/src/base/analyze_size.dart index 02f460d840b49..8957d8add2cd3 100644 --- a/packages/flutter_tools/lib/src/base/analyze_size.dart +++ b/packages/flutter_tools/lib/src/base/analyze_size.dart @@ -469,18 +469,15 @@ class _SymbolNode { } Map toJson() { - final Map json = { + final List> childrenAsJson = >[ + for (final _SymbolNode child in children) child.toJson(), + ]; + + return { 'n': name, 'value': byteSize, + if (childrenAsJson.isNotEmpty) 'children': childrenAsJson, }; - final List> childrenAsJson = >[]; - for (final _SymbolNode child in children) { - childrenAsJson.add(child.toJson()); - } - if (childrenAsJson.isNotEmpty) { - json['children'] = childrenAsJson; - } - return json; } } diff --git a/packages/flutter_tools/lib/src/base/deferred_component.dart b/packages/flutter_tools/lib/src/base/deferred_component.dart index 6bf2219e9e75d..0c6f675a91e73 100644 --- a/packages/flutter_tools/lib/src/base/deferred_component.dart +++ b/packages/flutter_tools/lib/src/base/deferred_component.dart @@ -71,14 +71,11 @@ class DeferredComponent { /// status, but will result in [loadingUnits] returning an empty set. void assignLoadingUnits(List allLoadingUnits) { _assigned = true; - _loadingUnits = {}; - for (final String lib in libraries) { - for (final LoadingUnit loadingUnit in allLoadingUnits) { - if (loadingUnit.libraries.contains(lib)) { - _loadingUnits!.add(loadingUnit); - } - } - } + _loadingUnits = { + for (final String lib in libraries) + for (final LoadingUnit loadingUnit in allLoadingUnits) + if (loadingUnit.libraries.contains(lib)) loadingUnit, + }; } /// Provides a human readable string representation of the @@ -193,21 +190,16 @@ class LoadingUnit { } on FormatException catch (e) { logger.printError('Loading unit manifest at `${manifestFile.path}` was invalid JSON:\n$e'); } - final List loadingUnits = []; - // Setup android source directory - if (manifest != null) { - for (final dynamic loadingUnitMetadata in manifest['loadingUnits'] as List) { - final Map loadingUnitMap = loadingUnitMetadata as Map; - if (loadingUnitMap['id'] == 1) { - continue; // Skip base unit - } - loadingUnits.add(LoadingUnit( - id: loadingUnitMap['id'] as int, - path: loadingUnitMap['path'] as String, - libraries: List.from(loadingUnitMap['libraries'] as List)), - ); - } - } - return loadingUnits; + // Set up android source directory + return [ + if (manifest?['loadingUnits'] case final List loadingUnits) + for (final Map loadingUnitMap in loadingUnits.cast>()) + if (loadingUnitMap['id'] != 1) // skip base unit + LoadingUnit( + id: loadingUnitMap['id'] as int, + path: loadingUnitMap['path'] as String, + libraries: List.from(loadingUnitMap['libraries'] as List), + ), + ]; } } diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart index 2cc9a61682c48..d28770dc79116 100644 --- a/packages/flutter_tools/lib/src/base/process.dart +++ b/packages/flutter_tools/lib/src/base/process.dart @@ -69,13 +69,10 @@ class _DefaultShutdownHooks implements ShutdownHooks { ); _shutdownHooksRunning = true; try { - final List> futures = >[]; - for (final ShutdownHook shutdownHook in registeredHooks) { - final FutureOr result = shutdownHook(); - if (result is Future) { - futures.add(result); - } - } + final List> futures = >[ + for (final ShutdownHook shutdownHook in registeredHooks) + if (shutdownHook() case final Future result) result, + ]; await Future.wait(futures); } finally { _shutdownHooksRunning = false; diff --git a/packages/flutter_tools/lib/src/build_system/build_system.dart b/packages/flutter_tools/lib/src/build_system/build_system.dart index 2fa2d8e272c3d..4914752ed1f97 100644 --- a/packages/flutter_tools/lib/src/build_system/build_system.dart +++ b/packages/flutter_tools/lib/src/build_system/build_system.dart @@ -182,21 +182,13 @@ abstract class Target { List outputs, Environment environment, ) { - final File stamp = _findStampFile(environment); - final List inputPaths = []; - for (final File input in inputs) { - inputPaths.add(input.path); - } - final List outputPaths = []; - for (final File output in outputs) { - outputPaths.add(output.path); - } - final String? key = buildKey; + String getPath(File file) => file.path; final Map result = { - 'inputs': inputPaths, - 'outputs': outputPaths, - if (key != null) 'buildKey': key, + 'inputs': inputs.map(getPath).toList(), + 'outputs': outputs.map(getPath).toList(), + if (buildKey case final String key) 'buildKey': key, }; + final File stamp = _findStampFile(environment); if (!stamp.existsSync()) { stamp.createSync(); } diff --git a/packages/flutter_tools/lib/src/build_system/depfile.dart b/packages/flutter_tools/lib/src/build_system/depfile.dart index 5ee0278be94a1..7ddb8f008c1ca 100644 --- a/packages/flutter_tools/lib/src/build_system/depfile.dart +++ b/packages/flutter_tools/lib/src/build_system/depfile.dart @@ -58,20 +58,12 @@ class DepfileService { /// The [file] contains a list of newline separated file URIs. The output /// file must be manually specified. Depfile parseDart2js(File file, File output) { - final List inputs = []; - for (final String rawUri in file.readAsLinesSync()) { - if (rawUri.trim().isEmpty) { - continue; - } - final Uri? fileUri = Uri.tryParse(rawUri); - if (fileUri == null) { - continue; - } - if (fileUri.scheme != 'file') { - continue; - } - inputs.add(_fileSystem.file(fileUri)); - } + final List inputs = [ + for (final String rawUri in file.readAsLinesSync()) + if (rawUri.trim().isNotEmpty) + if (Uri.tryParse(rawUri) case final Uri fileUri when fileUri.scheme == 'file') + _fileSystem.file(fileUri), + ]; return Depfile(inputs, [output]); } diff --git a/packages/flutter_tools/lib/src/build_system/targets/deferred_components.dart b/packages/flutter_tools/lib/src/build_system/targets/deferred_components.dart index 5a46dab972a19..d3e2d056fbaab 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/deferred_components.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/deferred_components.dart @@ -37,15 +37,11 @@ class DeferredComponentsGenSnapshotValidatorTarget extends Target { /// The abis to validate. List get _abis { - final List abis = []; - for (final AndroidAotDeferredComponentsBundle target in deferredComponentsDependencies) { - if (deferredComponentsTargets.contains(target.name)) { - abis.add( - getAndroidArchForName(getNameForTargetPlatform(target.dependency.targetPlatform)).archName - ); - } - } - return abis; + return [ + for (final AndroidAotDeferredComponentsBundle target in deferredComponentsDependencies) + if (deferredComponentsTargets.contains(target.name)) + getAndroidArchForName(getNameForTargetPlatform(target.dependency.targetPlatform)).archName, + ]; } @override diff --git a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart index 1228758eb16f4..12f122745c9ce 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart @@ -112,19 +112,11 @@ abstract class BuildFrameworkCommand extends BuildSubCommand { late final FlutterProject project = FlutterProject.current(); Future> getBuildInfos() async { - final List buildInfos = []; - - if (boolArg('debug')) { - buildInfos.add(await getBuildInfo(forcedBuildMode: BuildMode.debug)); - } - if (boolArg('profile')) { - buildInfos.add(await getBuildInfo(forcedBuildMode: BuildMode.profile)); - } - if (boolArg('release')) { - buildInfos.add(await getBuildInfo(forcedBuildMode: BuildMode.release)); - } - - return buildInfos; + return [ + if (boolArg('debug')) await getBuildInfo(forcedBuildMode: BuildMode.debug), + if (boolArg('profile')) await getBuildInfo(forcedBuildMode: BuildMode.profile), + if (boolArg('release')) await getBuildInfo(forcedBuildMode: BuildMode.release), + ]; } @override diff --git a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart index 817c3d4c4a5c0..3a9ee366e372d 100644 --- a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart +++ b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart @@ -101,14 +101,11 @@ class CustomDeviceLogReader extends DeviceLogReader { /// [logLines] as done. @override Future dispose() async { - final List> futures = >[]; - - for (final StreamSubscription subscription in subscriptions) { - futures.add(subscription.cancel()); - } - - futures.add(logLinesController.close()); - + final List> futures = >[ + for (final StreamSubscription subscription in subscriptions) + subscription.cancel(), + logLinesController.close(), + ]; await Future.wait(futures); } diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index cef3c71904475..a98c1246570a2 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart @@ -196,42 +196,16 @@ class _DefaultDoctorValidatorsProvider implements DoctorValidatorsProvider { @override List get workflows { - if (_workflows == null) { - _workflows = []; - - if (globals.iosWorkflow!.appliesToHostPlatform) { - _workflows!.add(globals.iosWorkflow!); - } - - if (androidWorkflow?.appliesToHostPlatform ?? false) { - _workflows!.add(androidWorkflow!); - } - - if (fuchsiaWorkflow?.appliesToHostPlatform ?? false) { - _workflows!.add(fuchsiaWorkflow!); - } - - if (linuxWorkflow.appliesToHostPlatform) { - _workflows!.add(linuxWorkflow); - } - - if (macOSWorkflow.appliesToHostPlatform) { - _workflows!.add(macOSWorkflow); - } - - if (windowsWorkflow?.appliesToHostPlatform ?? false) { - _workflows!.add(windowsWorkflow!); - } - - if (webWorkflow.appliesToHostPlatform) { - _workflows!.add(webWorkflow); - } - - if (customDeviceWorkflow.appliesToHostPlatform) { - _workflows!.add(customDeviceWorkflow); - } - } - return _workflows!; + return _workflows ??= [ + if (globals.iosWorkflow!.appliesToHostPlatform) globals.iosWorkflow!, + if (androidWorkflow?.appliesToHostPlatform ?? false) androidWorkflow!, + if (fuchsiaWorkflow?.appliesToHostPlatform ?? false) fuchsiaWorkflow!, + if (linuxWorkflow.appliesToHostPlatform) linuxWorkflow, + if (macOSWorkflow.appliesToHostPlatform) macOSWorkflow, + if (windowsWorkflow?.appliesToHostPlatform ?? false) windowsWorkflow!, + if (webWorkflow.appliesToHostPlatform) webWorkflow, + if (customDeviceWorkflow.appliesToHostPlatform) customDeviceWorkflow, + ]; } } diff --git a/packages/flutter_tools/lib/src/flutter_plugins.dart b/packages/flutter_tools/lib/src/flutter_plugins.dart index 9e1090295b180..66451f88292ad 100644 --- a/packages/flutter_tools/lib/src/flutter_plugins.dart +++ b/packages/flutter_tools/lib/src/flutter_plugins.dart @@ -316,14 +316,11 @@ public final class GeneratedPluginRegistrant { '''; List> _extractPlatformMaps(List plugins, String type) { - final List> pluginConfigs = >[]; - for (final Plugin p in plugins) { - final PluginPlatform? platformPlugin = p.platforms[type]; - if (platformPlugin != null) { - pluginConfigs.add(platformPlugin.toMap()); - } - } - return pluginConfigs; + return >[ + for (final Plugin plugin in plugins) + if (plugin.platforms[type] case final PluginPlatform platformPlugin) + platformPlugin.toMap(), + ]; } Future _writeAndroidPluginRegistrant(FlutterProject project, List plugins) async { diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart index 5da81c7cc271e..bb7ffdb0d9ccd 100644 --- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart +++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart @@ -188,15 +188,10 @@ class FuchsiaDevices extends PollingDeviceDiscovery { if (text == null || text.isEmpty) { return []; } - final List devices = []; - for (final String line in text) { - final FuchsiaDevice? device = await _parseDevice(line); - if (device == null) { - continue; - } - devices.add(device); - } - return devices; + return [ + for (final String line in text) + if (await _parseDevice(line) case final FuchsiaDevice device) device, + ]; } @override diff --git a/packages/flutter_tools/lib/src/ios/core_devices.dart b/packages/flutter_tools/lib/src/ios/core_devices.dart index 71a652650255d..729f06e0844b0 100644 --- a/packages/flutter_tools/lib/src/ios/core_devices.dart +++ b/packages/flutter_tools/lib/src/ios/core_devices.dart @@ -117,15 +117,12 @@ class IOSCoreDeviceControl { Future> getCoreDevices({ Duration timeout = const Duration(seconds: _minimumTimeoutInSeconds), }) async { - final List devices = []; - final List devicesSection = await _listCoreDevices(timeout: timeout); - for (final Object? deviceObject in devicesSection) { - if (deviceObject is Map) { - devices.add(IOSCoreDevice.fromBetaJson(deviceObject, logger: _logger)); - } - } - return devices; + return [ + for (final Object? deviceObject in devicesSection) + if (deviceObject is Map) + IOSCoreDevice.fromBetaJson(deviceObject, logger: _logger), + ]; } /// Executes `devicectl` command to get list of apps installed on the device. @@ -192,15 +189,12 @@ class IOSCoreDeviceControl { required String deviceId, String? bundleId, }) async { - final List apps = []; - final List appsData = await _listInstalledApps(deviceId: deviceId, bundleId: bundleId); - for (final Object? appObject in appsData) { - if (appObject is Map) { - apps.add(IOSCoreDeviceInstalledApp.fromBetaJson(appObject)); - } - } - return apps; + return [ + for (final Object? appObject in appsData) + if (appObject is Map) + IOSCoreDeviceInstalledApp.fromBetaJson(appObject), + ]; } Future isAppInstalled({ @@ -401,15 +395,12 @@ class IOSCoreDevice { Map data, { required Logger logger, }) { - final List<_IOSCoreDeviceCapability> capabilitiesList = <_IOSCoreDeviceCapability>[]; - if (data['capabilities'] is List) { - final List capabilitiesData = data['capabilities']! as List; - for (final Object? capabilityData in capabilitiesData) { - if (capabilityData != null && capabilityData is Map) { - capabilitiesList.add(_IOSCoreDeviceCapability.fromBetaJson(capabilityData)); - } - } - } + final List<_IOSCoreDeviceCapability> capabilitiesList = <_IOSCoreDeviceCapability>[ + if (data['capabilities'] case final List capabilitiesData) + for (final Object? capabilityData in capabilitiesData) + if (capabilityData != null && capabilityData is Map) + _IOSCoreDeviceCapability.fromBetaJson(capabilityData), + ]; _IOSCoreDeviceConnectionProperties? connectionProperties; if (data['connectionProperties'] is Map) { @@ -713,20 +704,17 @@ class _IOSCoreDeviceHardwareProperties { required Logger logger, }) { _IOSCoreDeviceCPUType? cpuType; - if (data['cpuType'] is Map) { - cpuType = _IOSCoreDeviceCPUType.fromBetaJson(data['cpuType']! as Map); + if (data['cpuType'] case final Map betaJson) { + cpuType = _IOSCoreDeviceCPUType.fromBetaJson(betaJson); } List<_IOSCoreDeviceCPUType>? supportedCPUTypes; - if (data['supportedCPUTypes'] is List) { - final List values = data['supportedCPUTypes']! as List; - final List<_IOSCoreDeviceCPUType> cpuTypes = <_IOSCoreDeviceCPUType>[]; - for (final Object? cpuTypeData in values) { - if (cpuTypeData is Map) { - cpuTypes.add(_IOSCoreDeviceCPUType.fromBetaJson(cpuTypeData)); - } - } - supportedCPUTypes = cpuTypes; + if (data['supportedCPUTypes'] case final List values) { + supportedCPUTypes = <_IOSCoreDeviceCPUType>[ + for (final Object? cpuTypeData in values) + if (cpuTypeData is Map) + _IOSCoreDeviceCPUType.fromBetaJson(cpuTypeData), + ]; } List? supportedDeviceFamilies; diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index 650f495aff4c7..76debfcd7894e 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart @@ -782,15 +782,12 @@ class IOSDevice extends Device { final List> discoveryOptions = >[ vmUrlFromMDns, + // vmServiceDiscovery uses device logs (`idevicesyslog`), which doesn't work + // on wireless devices. + if (vmServiceDiscovery != null && !isWirelesslyConnected) + vmServiceDiscovery.uri, ]; - // vmServiceDiscovery uses device logs (`idevicesyslog`), which doesn't work - // on wireless devices. - if (vmServiceDiscovery != null && !isWirelesslyConnected) { - final Future vmUrlFromLogs = vmServiceDiscovery.uri; - discoveryOptions.add(vmUrlFromLogs); - } - Uri? localUri = await Future.any( >[...discoveryOptions, cancelCompleter.future], ); diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart index fe6b1398f57d1..1433c85d29de2 100644 --- a/packages/flutter_tools/lib/src/ios/simulators.dart +++ b/packages/flutter_tools/lib/src/ios/simulators.dart @@ -183,20 +183,14 @@ class SimControl { /// Returns all the connected simulator devices. Future> getConnectedDevices() async { - final List devices = []; - final Map devicesSection = await _listBootedDevices(); - for (final String deviceCategory in devicesSection.keys) { - final Object? devicesData = devicesSection[deviceCategory]; - if (devicesData != null && devicesData is List) { - for (final Map data in devicesData.map?>(castStringKeyedMap).whereType>()) { - devices.add(BootedSimDevice(deviceCategory, data)); - } - } - } - - return devices; + return [ + for (final String deviceCategory in devicesSection.keys) + if (devicesSection[deviceCategory] case final List devicesData) + for (final Object? data in devicesData.map?>(castStringKeyedMap)) + if (data is Map) BootedSimDevice(deviceCategory, data), + ]; } Future isInstalled(String deviceId, String appId) { diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart index d8e1c80f5c6dd..5b8a4ef9b73cb 100644 --- a/packages/flutter_tools/lib/src/plugins.dart +++ b/packages/flutter_tools/lib/src/plugins.dart @@ -298,38 +298,29 @@ class Plugin { if (yaml == null) { return ['Invalid "platforms" specification.']; } - final List errors = []; - if (isInvalid(AndroidPlugin.kConfigKey, AndroidPlugin.validate)) { - errors.add('Invalid "android" plugin specification.'); - } - if (isInvalid(IOSPlugin.kConfigKey, IOSPlugin.validate)) { - errors.add('Invalid "ios" plugin specification.'); - } - if (isInvalid(LinuxPlugin.kConfigKey, LinuxPlugin.validate)) { - errors.add('Invalid "linux" plugin specification.'); - } - if (isInvalid(MacOSPlugin.kConfigKey, MacOSPlugin.validate)) { - errors.add('Invalid "macos" plugin specification.'); - } - if (isInvalid(WindowsPlugin.kConfigKey, WindowsPlugin.validate)) { - errors.add('Invalid "windows" plugin specification.'); - } - return errors; + return [ + if (isInvalid(AndroidPlugin.kConfigKey, AndroidPlugin.validate)) + 'Invalid "android" plugin specification.', + if (isInvalid(IOSPlugin.kConfigKey, IOSPlugin.validate)) + 'Invalid "ios" plugin specification.', + if (isInvalid(LinuxPlugin.kConfigKey, LinuxPlugin.validate)) + 'Invalid "linux" plugin specification.', + if (isInvalid(MacOSPlugin.kConfigKey, MacOSPlugin.validate)) + 'Invalid "macos" plugin specification.', + if (isInvalid(WindowsPlugin.kConfigKey, WindowsPlugin.validate)) + 'Invalid "windows" plugin specification.', + ]; } static List _validateLegacyYaml(YamlMap yaml) { - final List errors = []; - - if (yaml['androidPackage'] != null && yaml['androidPackage'] is! String) { - errors.add('The "androidPackage" must either be null or a string.'); - } - if (yaml['iosPrefix'] != null && yaml['iosPrefix'] is! String) { - errors.add('The "iosPrefix" must either be null or a string.'); - } - if (yaml['pluginClass'] != null && yaml['pluginClass'] is! String) { - errors.add('The "pluginClass" must either be null or a string..'); - } - return errors; + return [ + if (yaml['androidPackage'] is! String?) + 'The "androidPackage" must either be null or a string.', + if (yaml['iosPrefix'] is! String?) + 'The "iosPrefix" must either be null or a string.', + if (yaml['pluginClass'] is! String?) + 'The "pluginClass" must either be null or a string.', + ]; } static bool _supportsPlatform(YamlMap platformsYaml, String platformKey) { diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index 0d8f849583cba..b14769f7031b1 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -288,29 +288,16 @@ class FlutterProject { /// Returns a list of platform names that are supported by the project. List getSupportedPlatforms({bool includeRoot = false}) { - final List platforms = includeRoot ? [SupportedPlatform.root] : []; - if (android.existsSync()) { - platforms.add(SupportedPlatform.android); - } - if (ios.exists) { - platforms.add(SupportedPlatform.ios); - } - if (web.existsSync()) { - platforms.add(SupportedPlatform.web); - } - if (macos.existsSync()) { - platforms.add(SupportedPlatform.macos); - } - if (linux.existsSync()) { - platforms.add(SupportedPlatform.linux); - } - if (windows.existsSync()) { - platforms.add(SupportedPlatform.windows); - } - if (fuchsia.existsSync()) { - platforms.add(SupportedPlatform.fuchsia); - } - return platforms; + return [ + if (includeRoot) SupportedPlatform.root, + if (android.existsSync()) SupportedPlatform.android, + if (ios.exists) SupportedPlatform.ios, + if (web.existsSync()) SupportedPlatform.web, + if (macos.existsSync()) SupportedPlatform.macos, + if (linux.existsSync()) SupportedPlatform.linux, + if (windows.existsSync()) SupportedPlatform.windows, + if (fuchsia.existsSync()) SupportedPlatform.fuchsia, + ]; } /// The directory that will contain the example if an example exists. diff --git a/packages/flutter_tools/lib/src/project_validator.dart b/packages/flutter_tools/lib/src/project_validator.dart index 5749d009c17ea..2c65fb6c8d141 100644 --- a/packages/flutter_tools/lib/src/project_validator.dart +++ b/packages/flutter_tools/lib/src/project_validator.dart @@ -59,137 +59,53 @@ class VariableDumpMachineProjectValidator extends MachineProjectValidator { @override Future> start(FlutterProject project) async { - final List result = []; - - result.add(ProjectValidatorResult( - name: 'FlutterProject.directory', - value: _toJsonValue(project.directory.absolute.path), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.metadataFile', - value: _toJsonValue(project.metadataFile.absolute.path), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.android.exists', - value: _toJsonValue(project.android.existsSync()), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.ios.exists', - value: _toJsonValue(project.ios.exists), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.web.exists', - value: _toJsonValue(project.web.existsSync()), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.macos.exists', - value: _toJsonValue(project.macos.existsSync()), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.linux.exists', - value: _toJsonValue(project.linux.existsSync()), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.windows.exists', - value: _toJsonValue(project.windows.existsSync()), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.fuchsia.exists', - value: _toJsonValue(project.fuchsia.existsSync()), - status: StatusProjectValidator.info, - )); - - result.add(ProjectValidatorResult( - name: 'FlutterProject.android.isKotlin', - value: _toJsonValue(project.android.isKotlin), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.ios.isSwift', - value: _toJsonValue(project.ios.isSwift), - status: StatusProjectValidator.info, - )); - - result.add(ProjectValidatorResult( - name: 'FlutterProject.isModule', - value: _toJsonValue(project.isModule), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'FlutterProject.isPlugin', - value: _toJsonValue(project.isPlugin), - status: StatusProjectValidator.info, - )); - - result.add(ProjectValidatorResult( - name: 'FlutterProject.manifest.appname', - value: _toJsonValue(project.manifest.appName), - status: StatusProjectValidator.info, - )); - - // FlutterVersion final FlutterVersion version = FlutterVersion( flutterRoot: Cache.flutterRoot!, fs: fileSystem, ); - result.add(ProjectValidatorResult( - name: 'FlutterVersion.frameworkRevision', - value: _toJsonValue(version.frameworkRevision), - status: StatusProjectValidator.info, - )); - - // Platform - result.add(ProjectValidatorResult( - name: 'Platform.operatingSystem', - value: _toJsonValue(platform.operatingSystem), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.isAndroid', - value: _toJsonValue(platform.isAndroid), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.isIOS', - value: _toJsonValue(platform.isIOS), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.isWindows', - value: _toJsonValue(platform.isWindows), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.isMacOS', - value: _toJsonValue(platform.isMacOS), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.isFuchsia', - value: _toJsonValue(platform.isFuchsia), - status: StatusProjectValidator.info, - )); - result.add(ProjectValidatorResult( - name: 'Platform.pathSeparator', - value: _toJsonValue(platform.pathSeparator), - status: StatusProjectValidator.info, - )); - - // Cache - result.add(ProjectValidatorResult( - name: 'Cache.flutterRoot', - value: _toJsonValue(Cache.flutterRoot), - status: StatusProjectValidator.info, - )); - return result; + final Map result = { + 'FlutterProject.directory': project.directory.absolute.path, + 'FlutterProject.metadataFile': project.metadataFile.absolute.path, + 'FlutterProject.android.exists': project.android.existsSync(), + 'FlutterProject.ios.exists': project.ios.exists, + 'FlutterProject.web.exists': project.web.existsSync(), + 'FlutterProject.macos.exists': project.macos.existsSync(), + 'FlutterProject.linux.exists': project.linux.existsSync(), + 'FlutterProject.windows.exists': project.windows.existsSync(), + 'FlutterProject.fuchsia.exists': project.fuchsia.existsSync(), + + 'FlutterProject.android.isKotlin': project.android.isKotlin, + 'FlutterProject.ios.isSwift': project.ios.isSwift, + + 'FlutterProject.isModule': project.isModule, + 'FlutterProject.isPlugin': project.isPlugin, + + 'FlutterProject.manifest.appname': project.manifest.appName, + + // FlutterVersion + 'FlutterVersion.frameworkRevision': version.frameworkRevision, + + // Platform + 'Platform.operatingSystem': platform.operatingSystem, + 'Platform.isAndroid': platform.isAndroid, + 'Platform.isIOS': platform.isIOS, + 'Platform.isWindows': platform.isWindows, + 'Platform.isMacOS': platform.isMacOS, + 'Platform.isFuchsia': platform.isFuchsia, + 'Platform.pathSeparator': platform.pathSeparator, + + // Cache + 'Cache.flutterRoot': Cache.flutterRoot, + }; + + return [ + for (final String key in result.keys) + ProjectValidatorResult( + name: key, + value: _toJsonValue(result[key]), + status: StatusProjectValidator.info, + ), + ]; } @override diff --git a/packages/flutter_tools/lib/src/proxy_validator.dart b/packages/flutter_tools/lib/src/proxy_validator.dart index b02fffaf77792..9f0016f610ff7 100644 --- a/packages/flutter_tools/lib/src/proxy_validator.dart +++ b/packages/flutter_tools/lib/src/proxy_validator.dart @@ -62,19 +62,14 @@ class ProxyValidator extends DoctorValidator { } Future> _getLoopbackAddresses() async { - final List loopBackAddresses = ['localhost']; - final List networkInterfaces = await listNetworkInterfaces(includeLinkLocal: true, includeLoopback: true); - for (final NetworkInterface networkInterface in networkInterfaces) { - for (final InternetAddress internetAddress in networkInterface.addresses) { - if (internetAddress.isLoopback) { - loopBackAddresses.add(internetAddress.address); - } - } - } - - return loopBackAddresses; + return [ + 'localhost', + for (final NetworkInterface networkInterface in networkInterfaces) + for (final InternetAddress internetAddress in networkInterface.addresses) + if (internetAddress.isLoopback) internetAddress.address, + ]; } } diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index 1eea4d9c1795c..abfc06d91dcf7 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -1451,17 +1451,12 @@ abstract class ResidentRunner extends ResidentHandlers { Future enableObservatory() async { assert(debuggingOptions.serveObservatory); - final List> serveObservatoryRequests = >[]; - for (final FlutterDevice? device in flutterDevices) { - if (device == null) { - continue; - } - // Notify the VM service if the user wants Observatory to be served. - serveObservatoryRequests.add( - device.vmService?.callMethodWrapper('_serveObservatory') ?? - Future.value(), - ); - } + final List> serveObservatoryRequests = >[ + for (final FlutterDevice? device in flutterDevices) + if (device != null) + // Notify the VM service if the user wants Observatory to be served. + device.vmService?.callMethodWrapper('_serveObservatory') ?? Future.value(), + ]; try { await Future.wait(serveObservatoryRequests); } on vm_service.RPCError catch (e) { diff --git a/packages/flutter_tools/lib/src/test/test_time_recorder.dart b/packages/flutter_tools/lib/src/test/test_time_recorder.dart index 08ad333abd347..0161b8f534508 100644 --- a/packages/flutter_tools/lib/src/test/test_time_recorder.dart +++ b/packages/flutter_tools/lib/src/test/test_time_recorder.dart @@ -35,11 +35,7 @@ class TestTimeRecorder { @visibleForTesting List getPrintAsListForTesting() { - final List result = []; - for (final TestTimePhases phase in TestTimePhases.values) { - result.add(_getPrintStringForPhase(phase)); - } - return result; + return TestTimePhases.values.map(_getPrintStringForPhase).toList(); } @visibleForTesting diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 67587c55161a9..4076a2c1255b8 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -993,14 +993,11 @@ class FlutterVmService { throw VmServiceDisappearedException(); } - final List refs = []; - for (final FlutterView flutterView in flutterViews) { - final vm_service.IsolateRef? uiIsolate = flutterView.uiIsolate; - if (uiIsolate != null) { - refs.add(uiIsolate); - } - } - return refs; + return [ + for (final FlutterView flutterView in flutterViews) + if (flutterView.uiIsolate case final vm_service.IsolateRef uiIsolate) + uiIsolate, + ]; } /// Attempt to retrieve the isolate with id [isolateId], or `null` if it has diff --git a/packages/flutter_tools/lib/src/windows/application_package.dart b/packages/flutter_tools/lib/src/windows/application_package.dart index 3fd8be87aa9e0..29a61fce879fb 100644 --- a/packages/flutter_tools/lib/src/windows/application_package.dart +++ b/packages/flutter_tools/lib/src/windows/application_package.dart @@ -52,12 +52,10 @@ abstract class WindowsApp extends ApplicationPackage { globals.printError('Invalid prebuilt Windows app. Unable to extract from archive.'); return null; } - final List exeFilesFound = []; - for (final FileSystemEntity file in tempDir.listSync()) { - if (file.basename.endsWith('.exe')) { - exeFilesFound.add(file); - } - } + final List exeFilesFound = [ + for (final FileSystemEntity file in tempDir.listSync()) + if (file.basename.endsWith('.exe')) file, + ]; if (exeFilesFound.isEmpty) { globals.printError('Cannot find .exe files in the zip archive.'); diff --git a/packages/flutter_tools/lib/src/xcode_project.dart b/packages/flutter_tools/lib/src/xcode_project.dart index e4ca075d8320c..245f129c7c874 100644 --- a/packages/flutter_tools/lib/src/xcode_project.dart +++ b/packages/flutter_tools/lib/src/xcode_project.dart @@ -385,14 +385,11 @@ class IosProject extends XcodeBasedProject { )?.cast(); if (domains != null) { - final List result = []; - for (final String domain in domains) { - final RegExpMatch? match = _associatedDomainPattern.firstMatch(domain); - if (match != null) { - result.add(match.group(1)!); - } - } - return result; + return [ + for (final String domain in domains) + if (_associatedDomainPattern.firstMatch(domain) case final RegExpMatch match) + match.group(1)!, + ]; } } } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart index c9a2b131ec10a..b48b4194fb43b 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/devices_test.dart @@ -836,14 +836,12 @@ class _FakeDeviceManager extends DeviceManager { @override Future> getAllDevices({DeviceDiscoveryFilter? filter}) async { - final List devices = []; - for (final FakeDeviceJsonData deviceJson in fakeDevices) { - if (filter?.deviceConnectionInterface == null || - deviceJson.dev.connectionInterface == filter?.deviceConnectionInterface) { - devices.add(deviceJson.dev); - } - } - return devices; + final DeviceConnectionInterface? interface = filter?.deviceConnectionInterface; + return [ + for (final FakeDeviceJsonData deviceJson in fakeDevices) + if (interface == null || deviceJson.dev.connectionInterface == interface) + deviceJson.dev, + ]; } @override