onVerticalDragUpdate method
void
onVerticalDragUpdate(
- double delta,
- 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);
}
}