flightRules property

String? flightRules
inherited

Get the flight rules of the report or forecast.

Implementation

String? get flightRules {
  final prevailing = _prevailing.inMeters;
  double? ceiling;
  if (_clouds.length > 0) {
    for (final cloud in _clouds.items) {
      if (<String>['broken', 'overcast', 'indefinite ceiling']
          .contains(cloud.cover)) {
        ceiling = cloud.heightInMeters;
        break;
      }
    }
  }

  if (prevailing == null && ceiling == null) {
    return null;
  }

  for (final flightRule in FLIGHT_RULES.keys) {
    final rules = FLIGHT_RULES[flightRule]!;
    if (prevailing != null && ceiling != null) {
      if (ceiling < rules[0] || prevailing < rules[1]) {
        return flightRule;
      }
    } else if (prevailing != null && ceiling == null) {
      if (prevailing < rules[1]) {
        return flightRule;
      }
    } else if (prevailing == null && ceiling != null) {
      if (ceiling < rules[0]) {
        return flightRule;
      }
    } else {
      return 'VFR';
    }
  }

  return null;
}