onVerticalDragUpdate method

void onVerticalDragUpdate(
  1. double delta,
  2. double availableHeight
)

Implementation

void onVerticalDragUpdate(double delta, double availableHeight) {
  if (!_state.isDragging || availableHeight <= 0) return;

  final phase = _state.phase;

  if (phase == OverlayPhase.fullscreen ||
      phase == OverlayPhase.expanding ||
      phase == OverlayPhase.collapsing) {
    final normalizedDelta = -delta / availableHeight;
    _expandController.value = (_expandController.value + normalizedDelta)
        .clamp(0.0, 1.0);
    return;
  }

  if (phase == OverlayPhase.cardMode) {
    if (_verticalIntent == _VerticalIntent.none) {
      if (delta.abs() < 0.5) return;
      _verticalIntent = delta > 0
          ? _VerticalIntent.dismiss
          : _VerticalIntent.expand;
    }

    if (_verticalIntent == _VerticalIntent.expand) {
      final normalizedDelta = -delta / availableHeight;
      _expandController.value = (_expandController.value + normalizedDelta)
          .clamp(0.0, 1.0);
    } else {
      final normalizedDelta = delta / availableHeight;
      _overlayController.value = (_overlayController.value - normalizedDelta)
          .clamp(0.0, 1.0);
    }
    return;
  }

  if (phase == OverlayPhase.disappearing) {
    final normalizedDelta = delta / availableHeight;
    _overlayController.value = (_overlayController.value - normalizedDelta)
        .clamp(0.0, 1.0);
  }
}