startNavigation method

Future<void> startNavigation()

//////////// //////////// Starts active navigation along the planned route

Implementation

// II.E - Navigation Control
///////////////
/// Starts active navigation along the planned route
Future<void> startNavigation() async {
  if (_state != NavigationStatus.routePlanned || _currentRoute == null) {
    throw Exception('Cannot start navigation without a planned route');
  }

  try {
    _state = NavigationStatus.active;
    _progress = 0.0;
    _currentStepIndex = 0;
    _isPaused = false;

    // Calculate cumulative distances in case they weren't set
    if (_cumulativeStepDistances.isEmpty) {
      _calculateCumulativeStepDistances();
    }

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

    notifyListeners();
  } catch (e) {
    print('Error starting navigation: $e');
    throw Exception('Failed to start navigation: $e');
  }
}