detect method

  1. @override
Future<void> detect()
override

Performs the capability detection process

Implementation

@override
Future<void> detect() async {
  await Future.wait(detectors.map((d) => d.detect()));

  // Combine supported capabilities from all detectors
  supportedCaps.addAll(
    detectors.fold<Set<Capability>>(
      {},
      (caps, detector) => caps..addAll(detector.supportedCaps),
    ),
  );

  // Combine assumed capabilities
  assumedCaps.addAll(
    detectors.fold<Set<Capability>>(
      {},
      (caps, detector) => caps..addAll(detector.assumedCaps),
    ),
  );

  // Combine explicitly unsupported capabilities
  unsupportedCaps.addAll(
    detectors.fold<Set<Capability>>(
      {},
      (caps, detector) => caps..addAll(detector.unsupportedCaps),
    ),
  );

  // Remove capabilities that are explicitly unsupported from assumed list
  assumedCaps.removeAll(unsupportedCaps);

  // Resolve conflicts between supported and unsupported capabilities
  final intersection = supportedCaps.intersection(unsupportedCaps);
  supportedCaps.removeAll(intersection);
  unsupportedCaps.removeAll(intersection);
}