detect method
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);
}