part 'aperture_value.dart'; part 'iso_value.dart'; part 'shutter_speed_value.dart'; enum Stop { full, half, third } abstract class PhotographyValue { final T rawValue; final Stop stopType; const PhotographyValue(this.rawValue, this.stopType); T get value; } extension PhotographyValues on List> { List> fullStops() => where((e) => e.stopType == Stop.full).toList(); List> halfStops() => where((e) => e.stopType == Stop.full || e.stopType == Stop.half).toList(); List> thirdStops() => where((e) => e.stopType == Stop.full || e.stopType == Stop.third).toList(); }