fetchMyAchievements method

Future<MyAchievements?> fetchMyAchievements()

Retrieves the user's achievements across all categories.

Fetches comprehensive achievement data including progress for driving behavior categories such as speeding, hard braking, acceleration, turns, drowsy driving, night driving, and long trips. Each category contains tier information and progress tracking.

Returns:

  • MyAchievements?: Complete achievement data with progress for all categories, or null if not available

Usage:

try {
  final achievements = await communicator.fetchMyAchievements();
  if (achievements != null) {
    // Check overall achievement progress
    if (achievements.overall != null) {
      print('Current tier: ${achievements.overall!.currentTier?.value}');
      print('Progress: ${achievements.overall!.count}');
      print('Trips to next tier: ${achievements.overall!.remainingTrips}');
    }

    // Check specific category achievements
    if (achievements.speeding != null) {
      print('Speeding achievement: ${achievements.speeding!.description}');
      print('Current progress: ${achievements.speeding!.count}');
    }

    // Display hard braking progress
    if (achievements.hardBraking != null) {
      final braking = achievements.hardBraking!;
      print('Hard braking tier: ${braking.currentTier?.value}');
      print('Next tier requires: ${braking.nextTierTripsRequired} trips');
    }

    // Show all available tiers for a category
    if (achievements.longTrips?.tiers != null) {
      for (final tier in achievements.longTrips!.tiers!) {
        print('${tier.name?.value}: ${tier.threshold} trips required');
      }
    }
  }
} catch (e) {
  print('Failed to fetch achievements: $e');
}

Throws:

  • Future.error("Unable to fetch my achievements"): When retrieval fails

Achievement Categories:

  • Overall: Composite achievement score across all categories
  • Speeding: Achievement for maintaining appropriate speeds
  • Hard Braking: Achievement for smooth braking behavior
  • Hard Acceleration: Achievement for gradual acceleration
  • Hard Turn: Achievement for smooth cornering
  • Drowsy: Achievement for alert driving behavior
  • After 10pm: Achievement for night driving performance
  • Long Trips: Achievement for completing extended journeys

Achievement Tiers:

  • BRONZE: Entry level achievement
  • SILVER: Intermediate achievement
  • GOLD: Advanced achievement
  • PLATINUM: Expert level achievement
  • DIAMOND: Master level achievement
  • LEGEND: Highest possible achievement

Use Cases:

  • Achievement progress displays
  • Gamification and user engagement
  • Driving behavior improvement tracking
  • Leaderboard and ranking systems
  • Progress notifications and rewards

Implementation

Future<MyAchievements?> fetchMyAchievements() async {
  try {
    return await kruzr_comm.fetchMyAchievements();
  } on Exception catch (e, stackTrace) {
    if (kDebugMode) {
      print("Error in fetchMyAchievements");
      print(stackTrace);
      print(e);
    }
    return Future.error("Unable to fetch my achievements");
  }
}