animateRightToLeft method
Future<void>
animateRightToLeft(
)
Implementation
Future<void> animateRightToLeft() async {
final size = context.size;
if (size == null) return;
final width = size.width;
_gestureController.stop();
final currentOffset = _dragExtent / width;
_iconScale = 1.0;
// Calculate velocity-based duration
const velocity = 2.0; // Pixels per millisecond
final distance = width * (1.0 + currentOffset); // Distance to travel
final velocityDuration = (distance / velocity).round();
final finalDuration = Duration(milliseconds: velocityDuration.clamp(100, 300));
setState(() {
_gestureAnimation = Tween<Offset>(
begin: Offset(currentOffset, 0),
end: const Offset(-1.0, 0),
).animate(CurvedAnimation(
parent: _gestureController,
curve: velocity < 1.5 ? Curves.easeInCubic : Curves.linear,
));
});
_gestureController.duration = finalDuration;
await _gestureController.forward(from: 0);
}