computeState method

LiquidMorphState computeState({
  1. required double finalDx,
  2. required double finalDy,
  3. double horizontalOffset = 0.0,
  4. double verticalOffset = 0.0,
  5. double scaleDelta = 1.0,
  6. bool? adaptiveDamping,
  7. bool? isClosing,
})

Computes the current LiquidMorphState for the given layout geometry.

Call this once per frame from your AnimatedBuilder or addListener callback to get pre-calculated render values.

  • finalDx / finalDy — target displacement from trigger center to menu center, in logical pixels.
  • horizontalOffset / verticalOffset — screen-edge clamping corrections from the menu positioning logic.
  • scaleDelta — geometric scale ratio (see LiquidMorphPhysics.computeScaleDelta). Values > 1.5 engage adaptive damping. Defaults to 1.0 (unchanged baseline behaviour) for backward compatibility.
  • adaptiveDamping — explicit override; when null (default), inferred from scaleDelta.
  • isClosing — explicit override; when null (default), inferred from this controller's own _isClosing state.

Implementation

LiquidMorphState computeState({
  required double finalDx,
  required double finalDy,
  double horizontalOffset = 0.0,
  double verticalOffset = 0.0,
  double scaleDelta = 1.0,
  bool? adaptiveDamping,
  bool? isClosing,
}) {
  return LiquidMorphPhysics.compute(
    rawValue: _animationController.value,
    finalDx: finalDx,
    finalDy: finalDy,
    horizontalOffset: horizontalOffset,
    verticalOffset: verticalOffset,
    scaleDelta: scaleDelta,
    adaptiveDamping: adaptiveDamping,
    isClosing: isClosing ?? _isClosing,
  );
}