bool _hasDraggedTooFar(DragUpdateDetails details) { Offset offCenter = details.localPosition - new Offset(size.width / 2, size.height / 2); return(Mathf.Pow(Mathf.Max(0, offCenter.dx.abs() - size.width / 2), 2) + Mathf.Pow(Mathf.Max(0, offCenter.dy.abs() - size.height / 2), 2) > CupertinoSlidingSegmentedControlsUtils._kTouchYDistanceThreshold); }
void _handleDragUpdate(DragUpdateDetails details) { if (!this._isActive || this._moveController.isAnimating) { return; } float delta = details.primaryDelta ?? 0.0f; float oldDragExtent = this._dragExtent; switch (this.widget.direction) { case DismissDirection.horizontal: case DismissDirection.vertical: this._dragExtent += delta; break; case DismissDirection.up: if (this._dragExtent + delta < 0) { this._dragExtent += delta; } break; case DismissDirection.down: if (this._dragExtent + delta > 0) { this._dragExtent += delta; } break; case DismissDirection.endToStart: switch (Directionality.of(this.context)) { case TextDirection.rtl: if (this._dragExtent + delta > 0) { this._dragExtent += delta; } break; case TextDirection.ltr: if (this._dragExtent + delta < 0) { this._dragExtent += delta; } break; } break; case DismissDirection.startToEnd: switch (Directionality.of(this.context)) { case TextDirection.rtl: if (this._dragExtent + delta < 0) { this._dragExtent += delta; } break; case TextDirection.ltr: if (this._dragExtent + delta > 0) { this._dragExtent += delta; } break; } break; } if (oldDragExtent.sign() != this._dragExtent.sign()) { this.setState(() => { this._updateMoveAnimation(); }); } if (!this._moveController.isAnimating) { this._moveController.setValue(this._dragExtent.abs() / this._overallDragAxisExtent); } }