getActiveCondition method

Condition? getActiveCondition(
  1. BuildContext context,
  2. List<Condition> conditions
)

Set activeCondition. The active condition is found by matching the search criteria in order of precedence:

  1. Conditional.EQUALS Named breakpoints from a parent ResponsiveBreakpoints.
  2. Conditional.BETWEEN
  3. Conditional.SMALLER_THAN a. Named breakpoints. b. Unnamed breakpoints.
  4. Conditional.LARGER_THAN a. Named breakpoints. b. Unnamed breakpoints. Returns null if no Active Condition is found.

Implementation

Condition? getActiveCondition(
    BuildContext context, List<Condition> conditions) {
  ResponsiveBreakpointsData responsiveBreakpointsData =
      ResponsiveBreakpoints.of(context);
  double screenWidth = responsiveBreakpointsData.screenWidth;

  for (Condition condition in conditions.reversed) {
    if (condition.condition == Conditional.EQUALS) {
      if (condition.name == responsiveBreakpointsData.breakpoint.name) {
        return condition;
      }

      continue;
    }

    if (condition.condition == Conditional.BETWEEN) {
      if (screenWidth >= condition.breakpointStart! &&
          screenWidth <= condition.breakpointEnd!) {
        return condition;
      }

      continue;
    }

    if (condition.condition == Conditional.SMALLER_THAN) {
      if (condition.name != null) {
        if (responsiveBreakpointsData.smallerThan(condition.name!)) {
          return condition;
        }
      }

      if (condition.breakpointStart != null) {
        if (screenWidth < condition.breakpointStart!) {
          return condition;
        }
      }

      continue;
    }

    if (condition.condition == Conditional.LARGER_THAN) {
      if (condition.name != null) {
        if (responsiveBreakpointsData.largerThan(condition.name!)) {
          return condition;
        }
      }

      if (condition.breakpointStart != null) {
        if (screenWidth > condition.breakpointStart!) {
          return condition;
        }
      }

      continue;
    }
  }

  return null;
}