recalculateRoute method

Future<void> recalculateRoute(
  1. Future<RouteDetails> routeFetcher(
    1. RaliPosition start,
    2. RaliPosition end
    )
)

Recalculates the route if needed, using the provided route fetch function

Implementation

Future<void> recalculateRoute(
  Future<RouteDetails> Function(RaliPosition start, RaliPosition end) routeFetcher
) async {
  if (_currentLocation == null || _destination == null) return;

  _isRerouting = true;
  notifyListeners();

  try {
    final newRoute = await routeFetcher(_currentLocation!, _destination!);

    // Update route
    _currentRoute = newRoute;
    _currentStepIndex = 0;
    _calculateCumulativeStepDistances();
    _progress = 0.0;

    _isRerouting = false;
    _lastRerouteAttempt = DateTime.now();

    // Save navigation state for persistence
    await _saveNavigationState();

    notifyListeners();
  } catch (e) {
    print('Error recalculating route: $e');
    _isRerouting = false;
    notifyListeners();
  }
}