calculateScaledDp static method

double calculateScaledDp(
  1. double baseValue,
  2. ScreenConfiguration configuration,
  3. DpQualifier qualifier,
  4. Inverter inverter,
  5. bool ignoreMultiWindows,
  6. bool applyAspectRatio,
  7. double? customSensitivityK, {
  8. bool? knownInMultiWindow,
  9. DimenMetrics? metrics,
})

Pure-math scaled dp kernel over an explicit configuration.

Implementation

static double calculateScaledDp(
  double baseValue,
  ScreenConfiguration configuration,
  DpQualifier qualifier,
  Inverter inverter,
  bool ignoreMultiWindows,
  bool applyAspectRatio,
  double? customSensitivityK, {
  bool? knownInMultiWindow,
  DimenMetrics? metrics,
}) {
  final actualQualifier = DimenCalculationPlumbing.effectiveQualifier(
    qualifier,
    inverter,
    configuration.isLandscape,
    configuration.isPortrait,
  );
  if (DimenCalculationPlumbing.isMultiWindowConstrained(
    configuration,
    ignoreMultiWindows,
    knownInMultiWindow:
        knownInMultiWindow ?? (metrics?.isInMultiWindowMode ?? false),
  )) {
    return baseValue;
  }
  final isDefaultSw =
      qualifier == DpQualifier.smallWidth && inverter == Inverter.standard;
  if (isDefaultSw && customSensitivityK == null) {
    final m = metrics ?? _matchingMetrics(configuration);
    if (m != null) {
      return baseValue * m.scaledMultiplier(applyAspectRatio, null);
    }
  }
  final screenDimension =
      DimenCalculationPlumbing.readScreenDp(configuration, actualQualifier);
  if (applyAspectRatio) {
    final diff = screenDimension - DesignScaleConstants.baseWidthDp;
    final k = customSensitivityK ?? DimenCache.sensitivityDefault;
    final logAr =
        DimenCalculationPlumbing.fastLn(_normalizedAr(configuration));
    return baseValue *
        (1.0 + diff * (DimenCache.adjustmentScale + k * logAr));
  }
  return baseValue * (screenDimension * DimenCache.invBaseRatio);
}