BatteryStats.fromMap constructor

BatteryStats.fromMap(
  1. JsonMap map
)

Creates from a map.

Implementation

factory BatteryStats.fromMap(JsonMap map) {
  final timeByStateRaw = map['timeByState'];
  final timeByState = <String, Duration>{};
  if (timeByStateRaw is Map) {
    for (final entry in timeByStateRaw.entries) {
      final seconds = entry.value as num?;
      if (seconds != null) {
        timeByState[entry.key.toString()] =
            Duration(seconds: seconds.toInt());
      }
    }
  }

  return BatteryStats(
    gpsOnTimePercent: (map['gpsOnTimePercent'] as num?)?.toDouble() ?? 0,
    locationUpdatesCount: (map['locationUpdatesCount'] as num?)?.toInt() ?? 0,
    syncRequestsCount: (map['syncRequestsCount'] as num?)?.toInt() ?? 0,
    averageAccuracyMeters:
        (map['averageAccuracyMeters'] as num?)?.toDouble() ?? 0,
    trackingDurationMinutes:
        (map['trackingDurationMinutes'] as num?)?.toInt() ?? 0,
    estimatedDrainPercent: (map['estimatedDrainPercent'] as num?)?.toDouble(),
    optimizationLevel: OptimizationLevel.values.firstWhere(
      (e) => e.name == map['optimizationLevel'],
      orElse: () => OptimizationLevel.none,
    ),
    timeByState: timeByState,
    currentBatteryLevel: (map['currentBatteryLevel'] as num?)?.toInt(),
    isCharging: map['isCharging'] as bool?,
    accuracyDowngradeCount:
        (map['accuracyDowngradeCount'] as num?)?.toInt() ?? 0,
    gpsDisabledCount: (map['gpsDisabledCount'] as num?)?.toInt() ?? 0,
  );
}