calculateScaledDp static method
double
calculateScaledDp(
- double baseValue,
- ScreenConfiguration configuration,
- DpQualifier qualifier,
- Inverter inverter,
- bool ignoreMultiWindows,
- bool applyAspectRatio,
- double? customSensitivityK, {
- bool? knownInMultiWindow,
- 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);
}