diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index d932fd469d..dc2a84452b 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -25,21 +25,20 @@ DeviceManager get deviceManager => context[DeviceManager]; /// A class to get all available devices. class DeviceManager { + /// Constructing DeviceManagers is cheap; they only do expensive work if some /// of their methods are called. - DeviceManager() { - // Register the known discoverers. - _deviceDiscoverers.add(AndroidDevices()); - _deviceDiscoverers.add(IOSDevices()); - _deviceDiscoverers.add(IOSSimulators()); - _deviceDiscoverers.add(FuchsiaDevices()); - _deviceDiscoverers.add(FlutterTesterDevices()); - _deviceDiscoverers.add(MacOSDevices()); - _deviceDiscoverers.add(LinuxDevices()); - _deviceDiscoverers.add(WindowsDevices()); - } - - final List _deviceDiscoverers = []; + List get deviceDiscoverers => _deviceDiscoverers; + final List _deviceDiscoverers = List.unmodifiable([ + AndroidDevices(), + IOSDevices(), + IOSSimulators(), + FuchsiaDevices(), + FlutterTesterDevices(), + MacOSDevices(), + LinuxDevices(), + WindowsDevices(), + ]); String _specifiedDeviceId; @@ -91,7 +90,7 @@ class DeviceManager { } Iterable get _platformDiscoverers { - return _deviceDiscoverers.where((DeviceDiscovery discoverer) => discoverer.supportsPlatform); + return deviceDiscoverers.where((DeviceDiscovery discoverer) => discoverer.supportsPlatform); } /// Return the list of all connected devices. diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index 3243d287f7..92ae65eaac 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -179,6 +179,9 @@ class MockDeviceManager implements DeviceManager { @override Future> getDeviceDiagnostics() async => []; + + @override + List get deviceDiscoverers => []; } class MockAndroidLicenseValidator extends AndroidLicenseValidator {