Location constructor

Location(
  1. dynamic params
)

Implementation

Location(dynamic params) {
  final Map p = _asMap(params);

  map = params;

  // Always present in both real + dummy payloads.
  coords = Coords(p['coords']);

  // Optional objects can be missing in dummy payloads.
  battery = Battery(p['battery']);
  activity = Activity(p['activity']);

  // timestamp: String (ISO-8601) or int (epoch ms) depending on timestampFormat.
  timestamp = p['timestamp'] ?? '';

  // recorded_at may be absent in dummy payloads.
  recordedAt = p['recorded_at'] ?? timestamp;

  // age may be absent.
  age = _mapDouble(p, 'age', fallback: 0.0);

  // is_moving may be bool or 0/1.
  isMoving = _mapBool(p, 'is_moving', fallback: false);

  // uuid may be absent in dummy payloads.
  final dynamic u = p['uuid'];
  uuid = (u is String) ? u : (u?.toString() ?? '');

  odometer = _mapDouble(p, 'odometer', fallback: 0.0);

  sample = _mapBool(p, 'sample', fallback: false);

  final dynamic e = p['event'];
  event = (e is String) ? e : (e?.toString() ?? '');

  if (p['geofence'] != null) {
    geofence = GeofenceEvent(p['geofence']);
  }

  mock = _mapBool(p, 'mock', fallback: false);

  if (p['extras'] != null && p['extras'] is Map) {
    extras = Map.from(p['extras']);
  }
}