resolveScaledDp static method

double resolveScaledDp(
  1. double base,
  2. AppDimensContextLike scope,
  3. DpQualifier qualifier, {
  4. Inverter inverter = Inverter.standard,
  5. bool ignoreMultiWindows = false,
  6. bool applyAspectRatio = false,
  7. double? customSensitivityK,
})

Full-path scaled dp resolution against a window-like scope.

Implementation

static double resolveScaledDp(
  double base,
  AppDimensContextLike scope,
  DpQualifier qualifier, {
  Inverter inverter = Inverter.standard,
  bool ignoreMultiWindows = false,
  bool applyAspectRatio = false,
  double? customSensitivityK,
}) {
  final configuration = scope.configuration;

  // Fast lane: dominant path — one coherent snapshot read + one multiply.
  if (DimenCache.isEnabled &&
      inverter == Inverter.standard &&
      !ignoreMultiWindows &&
      customSensitivityK == null &&
      (qualifier == DpQualifier.smallWidth || !applyAspectRatio)) {
    return base *
        scope.dimenMetrics.fastScaledMultiplier(qualifier, applyAspectRatio);
  }

  final key = CacheKey(
    baseValue: base,
    isLandscape: configuration.isLandscape,
    ignoreMultiWindows: ignoreMultiWindows,
    calcType: CalcType.scaled,
    qualifier: qualifier,
    inverter: inverter,
    applyAspectRatio: applyAspectRatio,
    valueType: ValueType.dp,
    customSensitivityK: customSensitivityK,
  );
  final metrics = scope.dimenMetrics;
  return DimenCache.getOrPutFor(metrics, key, () {
    return calculateScaledDp(
      base,
      configuration,
      qualifier,
      inverter,
      ignoreMultiWindows,
      applyAspectRatio,
      customSensitivityK,
      knownInMultiWindow: metrics.isInMultiWindowMode,
      metrics: metrics,
    );
  });
}