resolveScaledDp static method
double
resolveScaledDp(
- double base,
- AppDimensContextLike scope,
- DpQualifier qualifier, {
- Inverter inverter = Inverter.standard,
- bool ignoreMultiWindows = false,
- bool applyAspectRatio = false,
- 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,
);
});
}