spinToSegment method
void
spinToSegment({
- required WheelSegment selectedSegment,
- required List<
WheelSegment> segments,
Implementation
void spinToSegment({
required WheelSegment selectedSegment,
required List<WheelSegment> segments,
}) {
// ========================================
// VALIDATION
// ========================================
if (segments.isEmpty) {
return;
}
// ========================================
// CALCULATE TOTAL WEIGHT
// ========================================
final totalWeight = _calculateTotalWeight(segments);
if (totalWeight <= 0.0) {
return;
}
// ========================================
// CALCULATE TARGET ANGLE
// ========================================
final targetAngle = _calculateTargetAngle(
selectedSegment,
segments,
totalWeight,
);
// ========================================
// ADD RANDOM OFFSET
// ========================================
final finalTargetAngle = _addRandomOffset(
targetAngle,
selectedSegment,
totalWeight,
);
// ========================================
// CALCULATE FINAL ANGLE WITH TURNS
// ========================================
final finalAngle = _calculateFinalAngle(finalTargetAngle);
// ========================================
// CREATE AND START ANIMATION
// ========================================
_createAndStartAnimation(finalAngle);
}