getAllSavedVehicles method

Future<List<NearbyDevice>> getAllSavedVehicles()

Retrieves all vehicles that have been saved by the user.

Returns a list of all Bluetooth devices that have been previously saved as vehicles. These devices are used for automatic trip detection and provide a way for users to manage their vehicle associations.

Returns:

  • List<NearbyDevice>: List of saved vehicle devices

Usage:

try {
  final savedVehicles = await communicator.getAllSavedVehicles();

  if (savedVehicles.isNotEmpty) {
    print('You have ${savedVehicles.length} saved vehicles:');
    for (final vehicle in savedVehicles) {
      print('- ${vehicle.name} (${vehicle.address})');
    }
  } else {
    print('No vehicles saved yet');
    // Prompt user to scan and save their vehicle
  }

  // Check if a specific device is already saved
  final isCarSaved = savedVehicles.any((v) => v.address == 'AA:BB:CC:DD:EE:FF');
} catch (e) {
  print('Failed to get saved vehicles: $e');
}

Throws:

  • Future.error("Unable to get saved vehicle"): When retrieval fails

Device Information Includes:

  • Name: Human-readable device name (e.g., "Honda CR-V", "Tesla Model 3")
  • Address: Unique Bluetooth MAC address
  • Signal Strength: RSSI value when device was discovered
  • Device Type: Type of Bluetooth device

Use Cases:

  • Vehicle management screens
  • Displaying connected vehicle status
  • Validating vehicle setup during onboarding
  • Debugging trip detection issues
  • Multi-vehicle household management

Important Notes:

  • List persists across app restarts
  • Devices may not always be currently connected
  • Empty list indicates no vehicles have been configured

Implementation

Future<List<NearbyDevice>> getAllSavedVehicles() async {
  try {
    return await kruzr_comm.getAllSavedVehicles();
  } on Exception catch (e, stackTrace) {
    if (kDebugMode) {
      print("Error in getAllSavedVehicles");
      print(stackTrace);
      print(e);
    }
    return Future.error("Unable to get all saved vehicle");
  }
}